Scrape
POST /v1/scrape fetches one URL and converts it. The model is
<provider>/<model>. The provider fetches the page, not Aile, and nothing is stored.
1curl https://api.aile.sh/v1/scrape -H "Authorization: Bearer $AILE_KEY" -H "Content-Type: application/json" -d '{ "model": "firecrawl/scrape", "url": "https://example.com", "formats": ["markdown", "links"] }'
1{2 "object": "scrape",3 "model": "firecrawl/scrape",4 "url": "https://example.com/",5 "markdown": "# Example Domain ...",6 "links": ["https://www.iana.org/domains/example"],7 "metadata": { "title": "Example Domain", "status_code": 200, "content_type": "text/html" }8}
Models
| Model | formats | render | Billed |
|---|---|---|---|
firecrawl/scrape | any of markdown, html, raw_html, links | refused | per page, +1 per PDF page read |
scrapingdog/scrape | one of markdown, raw_html | static (default) or js | one unit per request |
scrapingdog/scrape-geo | one of markdown, raw_html | static only | one unit per request |
scrapingbee/scrape | one of markdown, raw_html | static (default) or js | one unit per request |
A field a model does not take is a 400, never silently dropped.
ScrapingDog and ScrapingBee answer markdown or raw_html with an empty
metadata, and return HTML pages only: a PDF or other binary is a 415.
ScrapingBee refuses Google URLs.
Fields
url: required,httporhttps.formats: default["markdown"]. ScrapingDog and ScrapingBee take exactly one.render:staticorjs(runs the page's JavaScript, at a higher price). Absent meansstatic.wait_for: milliseconds, up to 10,000. On ScrapingDog and ScrapingBee it needsrender: "js".country: two-letter code. Optional on Firecrawl, required onscrapingdog/scrape-geo, refused onscrapingdog/scrapeandscrapingbee/scrape.only_main_content: Firecrawl, defaulttrue. ScrapingDog returns the whole page; on ScrapingBeemarkdownis the main content andraw_htmlthe whole page.mobile: Firecrawl only.max_pdf_pages: Firecrawl, 1 to 50, default 50; caps how much of a PDF is read. The other models take at most 1.
Billing
- Firecrawl: a web page is one unit, a PDF one unit plus one per page read. The hold is
1 + max_pdf_pagesand is written down to what was read. Lowermax_pdf_pagesfor a smaller hold. - ScrapingDog and ScrapingBee: one unit per request at the price of the
renderyou named, so the hold is the bill. - ScrapingDog and ScrapingBee: a target page that answers 404 or 410 is a
404and costs nothing (413 is a413). Firecrawl returns the page with itsmetadata.status_codeand bills it. - Keyless x402 works here when the deployment enables it. You pay for what you name: on Firecrawl, with no
max_pdf_pages, one webpage and no PDF parsing; with it,1 + max_pdf_pageswebpages, whatever the page turns out to be. On the other models, one webpage at therenderprice.