Recipe · Web scraping
Paged harvest
Walks one list through its "next page" control, filing every page into Collected items and keying rows so a second walk updates rather than duplicates. Both selectors are parameters because no two sites draw a list or a pager the same way — check them against the page before the first real run.
What it does
Walks one list through its "next page" control, filing every page into the same keyed table.
It runs against one profile, through that profile's own proxy and with its own cookies — so the pages load the way that account's owner would see them. It navigates, so give it a profile whose session you are happy to have in use.
The 9 steps
The real tree, read out of the pack the launcher ships. Indentation is nesting: the steps under a loop run once per row, and the ones under a branch run only when the condition above them holds. Every {{…}} is a value filled in at run time — from the row being walked, from a setting on the run, or from the profile itself.
evaluateStamp the passRun scriptgotoOpen the first pageGo to {{vars.start_url}}waitWaitloopEach pageLoop timesEach time
evaluateRead this pageRun scriptsaveRowsFile this pageSave to Collected itemson failure: continueclickNext pageClick {{vars.next_selector}}on failure: continuewaitWaitscreenshotScreenshoton failure: continueEach of those is one of the step types on the automation reference, with the same fields the editor shows and the same fields an agent is handed over the local API.
The tables it uses
These load with the recipe. A dataset is a typed table your workspace owns — the columns are named and typed up front so the steps can address them, and every one of them is yours to rename, extend or fill from a file afterwards.
Collected items
writesWhat the passes write: one row per item, keyed so a re-run updates it instead of adding a second copy.
- row_key
- Key · text
- source
- Source · text
- title
- Title · text
- url
- URL · url
- detail
- Detail · longText
- collected_at
- Collected at · datetime
- profile
- Profile · profile
Re-running updates the row it already wrote rather than adding a second one. That is what the match column in the save step is for, and it is the difference between a status check and a table that doubles in size every pass.
What it asks you for
Settings are filled in when the run starts, and every profile can hold its own values — which is how one workflow serves a whole folder of accounts.
- start_url
- First page · text · required
- source
- Source name · text · required
- row_selector
- Row selector · text
- next_selector
- Next-page control · text
The list's own first page, as you reach it while signed in. Nothing is stored: the run uses the session, proxy and fingerprint already in this profile.
Written into every collected row, and half of its key — so two lists never overwrite each other's rows for a page they both link to.
A CSS selector matching ONE item. The default fits an ordinary table or list; a virtualised list draws only what is on screen and needs its own.
What the run clicks to advance. Many sites label it instead — a link whose text is "Next", or a button with an aria-label. When it stops matching the walk simply ends, so a wrong value here looks like a very short run.
Loading it
In the launcher, open Automations, choose Load a starter pack, and pick Web scraping. Untick anything you do not want. The tables land first, then the workflows, then a project called Collection that links them together.
What arrives is an ordinary automation row. Open it in the editor, change a step, rename it, delete it — nothing in the app treats it as special afterwards, and loading the pack a second time makes a fresh copy rather than overwriting the one you edited. Tables are the opposite: an existing table of the same name is reused and keeps its rows.
The rest of the web scraping pack
They load together, share the tables above, and land in one Collection project.
Target audit
Flags target rows that are missing a label, a URL, a row selector or a profile of their own. Opens no page.
One profile · Opens no page · The Scrape targets table
Warm up a session
Opens this profile's sources and reads them like a person — scroll, pause, scroll back — without collecting anything.
One profile · Its own proxy and cookies · The Scrape targets table
List harvest
Walks this profile's sources, reads each list page with the row's own selector, and files the items.
One profile · Its own proxy and cookies · 2 tables