What you need
- An Outcrawl API key in
OUTCRAWL_API_KEY. - One profile per service, signed in to that site and labelled
subs-<service>(subs-nytimes,subs-audible…). Sign each one in once: from TypeScript withoc.browser({ profile }), or with an agent run that types your password from a text secret. If a site emails a sign-in code, that run reads it through a connected inbox integration, such as AgentMail. - A terminal. The program asks you which services to cancel between its two passes.
How it works
1
Each service gets its own signed-in browser
Every run names its service’s profile, so it starts signed in. A profile opens one browser at a time, so a service’s two runs never overlap, while different services run side by side,
MAX_AT_ONCE at a time. Every key on your account shares one browser slot count. Browsers, agent runs, crawls, searches and scrapes that aren’t served from cache each hold a slot. A submit over the limit is refused with ConcurrencyLimitError, and the program waits 20 seconds and tries again.2
Pass 1 walks each flow to the last screen
An agent run answers the survey, declines every offer, and stops on the final screen without pressing its button. Its schema brings back the plan, the price, the renewal date, every screen it passed, the offers it declined, any fee to cancel, and the exact label of the final button. The rule
Only use nytimes.com. is enforced: the agent cannot go to any other site.3
You choose
Nothing has been cancelled yet. The program prints what each run found and asks which to cancel. No run is waiting on you: the approval sits between two runs.
4
Pass 2 presses the button you approved
A fresh run on the same profile follows the path pass 1 found, declines the offers again, and presses the final button, unless the fee on that screen differs from the one you saw. It returns the confirmation and the last day of access, or exactly what is left for you to do.
The stop at the last screen is in the task, not in a rule. Rules can block a payment, an order, a message or a sign-up, but Outcrawl’s irreversible check reads a button that starts with “Cancel” as a way out of a page, so no rule can block a cancellation. That is why nothing rests on pass 1: the only run told to press the final button is the one you approved. Read
path in pass 1’s answer before you say yes.The program
What you get back
Pass 1, and your answer:cancellations.json with pass 1’s walkthroughs:
What it costs
An agent run is billed for the model’s usage, browser time and proxy usage, per pricing. A typical run costs about 15 credits a minute all in, proxy usage included. That is an estimate: the real figure depends on the task, and a page-heavy site costs more.- Pass 1 takes about 2.5 minutes per service, so about 38 credits a service.
- Pass 2 takes about 1.5 minutes, about 23 credits for each service you approve.
caps.budget is 150 in pass 1 and 100 in pass 2.
Make it yours
- Watch pass 2 as it happens: log the
watchUrlfromjob.submittedand open it; press take control in the live viewer to step in at any point, then hand it back. While you hold the wheel, the run bills browser time (1 credit a minute) and proxy usage only, with no model usage. - Let a run sign back in when a session has lapsed: give it your password as a secret and an inbox integration for the emailed code.
- Run pass 1 alone each month as an audit: every plan, price and renewal date you pay, with nothing cancelled.
- Post the pass 2 results to Slack with one HTTP call to an incoming webhook.
Related
Agents
Submit a run, caps and typed results.
Profiles
Stay signed in to each service.
Rules
Which rules are enforced, and which are guidance.
Human in the loop
Take and release control of a live run.