Any page, as Markdown or the JSON you ask for
Send a URL and get the page as clean Markdown, or describe what you want and get JSON in your shape. Spidra runs the browser, proxies and CAPTCHA solving, for one page or 50 at once.
Markdown, a prompt, or a schema
No selectors to write or maintain. Real runs on real pages, with what each one cost.
Use it
When you want the page itself: for a model to read, to store, or to search later.
About 8,300 characters for the whole page, code examples kept as fenced blocks. extract_content_only left out the site's menus.
# Queues**Source code:** [Lib/asyncio/queues.py](https://github.com/python/cpython/tree/3.15/Lib/asyncio/queues.py)…## ExamplesQueues can be used to distribute workload between several concurrent tasks:```import asyncioimport randomimport timeasync def worker(name, queue):while True:# Get a "work item" out of the queue.sleep_for = await queue.get()…
Click, scroll and type before it reads
Pages that load more on scroll or hide content behind a button get browser actions that run first, in order. Point at elements with CSS or XPath, or describe them in plain words. Actions are free.
forEach finds repeating items you describe, then reads each in place, opens each link, or clicks each to expand it, following the next-page button for up to 10 more pages and 50 items.
1from spidra import ScrapeParams, ScrapeUrl23page = client.scrape(ScrapeParams(4 urls=[ScrapeUrl(5 url="https://news.ycombinator.com/",6 actions=[7 {"type": "click", "value": "The More link at the bottom of the list"},8 {"type": "wait", "duration": 1500},9 ],10 )],11 prompt="Every story title with its points",12))
One page, or fifty at once
A scrape takes up to 3 URLs and gives one answer across them. A batch takes up to 50 and gives each its own result, status and retry.
1batch = client.batch_scrape(2 ["https://linear.app/pricing", "https://supabase.com/pricing", "https://www.notion.com/pricing"],3 prompt="List every pricing plan on the page",4 schema=PLANS, # name, price, currency, unit, billing_period5)67for item in batch.items:8 if item.status != "completed":9 print("FAILED", item.url, item.error) # failed pages cost nothing10 continue11 for plan in item.result["plans"]:12 ...
- Failures stay separate. A page that fails costs nothing and doesn't stop the others.
- Retry only what failed, with every original option.
Three pricing pages with three different layouts, one shape back
linear.app | Free | 0 USDlinear.app | Basic | 10 USDlinear.app | Business | 16 USDlinear.app | Enterprise | customsupabase.com | Free | 0 USDsupabase.com | Pro | 25 USDsupabase.com | Team | 599 USDsupabase.com | Enterprise | customnotion.com | Free | 0 EURnotion.com | Plus | 9.5 EUR…
First ten plans from a real run. Currency symbols mapped to codes in the loop; a null price means custom pricing.
Documents, screenshots and popular sites
Documents by link
A PDF, Word, Excel or PowerPoint link comes back as Markdown. The Attention Is All You Need PDF read for 1 credit.
For uploads and page ranges, ParseScreenshots
The visible screen or the full page, as a hosted image link next to the data. No extra credits.
Popular sites as data
Links to Amazon, Google Maps, Indeed, YouTube and other popular sites come back with the site's own fields, no prompt needed.
See the sitesFast Mode
Skips the browser for static pages and opens one only when a page needs it. Actions and screenshots are off.
For pages that push back
- urlsarray1 to 3 per scrape, each with optional actions. Up to 50 in a batch.
- promptstringWhat you want from the page, in plain words.
- schemaobjectA JSON Schema that fixes the shape of the answer.
- outputmarkdownmarkdown (default) or json.
- extractContentOnlybooleanDrop navigation, headers, footers and sidebars.
- screenshotbooleanThe visible screen, or fullPageScreenshot for the whole page.
- useProxybooleanStealth Mode, with proxyCountry to pick a country.
- cookiesstringYour session for pages behind your login.
- scrapeModedefaultfast skips the browser for static pages.
The result has content (the Markdown or your answer), one entry per URL with its own Markdown, screenshots if you asked, and stats with run time, tokens and CAPTCHAs solved.
What it costs
1 credit per page
Plus AI tokens when you use a prompt or schema, usually about 1 more on an ordinary page, and 5 per CAPTCHA solved.
See plansCosts nothing
- Pages that error, come back blank or need a sign-in
- Browser actions and screenshots
- Checking a job's status
Limits
- 1 to 3 URLs per scrape, 50 per batch
- 60 scrapes and 20 batches a minute
- Stealth Mode in 48 countries
Built with Scrape
Questions, answered
Scrape
Yes. Every scrape opens the page in a real browser by default, so content drawn by JavaScript is there when it's read. For static pages, Fast Mode skips the browser and is quicker.
You build the product.
Spidra handles the data work.
Start with 300 free credits, about 300 pages. No credit card required.