https://api.parse.bot with your API key in the X-API-Key header.
Prefer to do this in the browser? The Dashboard guide walks the same flow through the UI — paste a URL, test endpoints, revise, and grab a snippet. Use this page if you want to drive it programmatically.
Prerequisites
- A Parse account at parse.bot
- An API key from the dashboard (Settings → API Keys). See Authentication.
Step 0 (optional): Check the marketplace first
Thousands of sites already have a pre-built API. Searching first is free, instant, and needs no auth:| Route | |
|---|---|
| Call the canonical directly (any API key) | POST /scraper/{canonical_scraper_id}/{endpoint_name} |
| Subscribe — your own pinned copy, in My APIs | POST /marketplace/apis/{id}/subscribe |
| Fork privately — isolated, desynced copy | POST /marketplace/apis/{id}/fork |
| Dispatch by URL — clone it instantly | POST /dispatch (Step 1 below) |
canonical_scraper_id and endpoint list from GET /marketplace/apis/{id}. See the Marketplace guide for the details and trade-offs. If there’s no match, dispatch your URL (below) and Parse builds it from scratch.
Step 1: Create an API
Submit a URL and, optionally, describe the data you want:matched: true— an existing API already covered this site; it’s ready to call now.matched: false— a build job was queued. Polltask_iduntil it completes (Step 2).may_require_auth: true— the site likely needs a login. Authenticated APIs are built from the dashboard, not the API — see Authenticated APIs.
contributes_to_marketplace (optional, default true). When true, your API stays linked to the shared canonical for its domain: you can pull upstream improvements, and the build is free. Set it to false to build a fully private, desynced API (this is a charged build and the choice is permanent). Most users should leave it true.Step 2: Poll for completion
status is completed. A typical build takes anywhere from a few seconds (marketplace match) to a couple of minutes (a fresh build on a complex site).
The status field moves through this lifecycle:
| Status | Meaning |
|---|---|
queued | Accepted, waiting for a worker. |
running | The agent is actively building. progress shows live detail. |
needs_input | The agent needs something from you (e.g. a sample search term). Respond via POST /dispatch/{task_id} — see below. |
completed | ✅ Done. generated_api is populated and the endpoints are callable. |
failed | ❌ Build failed. error explains why. |
cancelled | You cancelled it via POST /dispatch/tasks/{task_id}/cancel. |
generated_api object with everything needed to call it:
If status is needs_input
If status is needs_input
The agent occasionally needs a hint — most often a realistic input to test an endpoint (e.g. a search term). The
user_input_prompt field describes what it’s asking for. Answer it and the build resumes:Step 3: Call an endpoint
Use thescraper_id and an endpoint_name from the spec. Send parameters in the JSON body for POST endpoints, or as query-string params for GET endpoints:
return_schema, with no wrapper:
X-RateLimit-Remaining, X-RateLimit-Reset, X-Credits-Remaining, …) so you can pace your calls. When a call fails, the HTTP status tells you whose fault it is — a 502 means the target site failed, a 500 means the scraper bugged out. See Errors & Troubleshooting.
Step 4: Revise your API
Need a change? Describe it in plain English:task_id exactly like Step 2. Your scraper_id stays the same — new and updated endpoints become callable when the revision completes.
Step 5: Export or connect an agent
What’s next
Python SDK
Typed Python clients generated by the parse CLI
Code examples
Full Python & JavaScript clients with a polling helper
Marketplace
Search pre-built APIs before you build
API Updates
Pull upstream improvements into your APIs
Errors & Troubleshooting
Read the execution envelope — whose fault a 422 / 502 / 503 is