Built for scraping jobs
- Schedules. Declare a
cronarray indenkops.jsonand DenkOps triggers your endpoint on time, with run history in the dashboard and over MCP. In Bun you can also use the in-processdenkops.cronhelper. - Memory between runs. Save seen URLs, last prices or snapshots on the durable
/persistdisk. It survives restarts and redeploys. - No time limit. A crawl that takes forty minutes simply runs for forty minutes.
- Outbound traffic you control. Egress is blocked by default; allow only the domains your scraper should reach. A bug or a prompt-injected agent cannot send data anywhere else, see zero-trust egress for agents.
- A scraper your agent can drive. Expose the scraper as an MCP tool and ask an assistant to run it or read the results, see a scraper your agent can drive.
Respect the sites you scrape
Check the site's terms and robots rules, identify your client, and keep request rates low. A schedule and a small state file make it easy to fetch only what changed.
Pick your stack
The guides below are complete scrapers in Bun, FastAPI, Flask and Express.