Free web scraping API Give it a URL. Get back what you need.

A free web scraping API. Any page as HTML, text, markdown or JSON — and for Amazon and a few other sites, an endpoint that already did the parsing. When a site fights back, you ask and I build it.

50,000 credits a day · no card · HTML · text · markdown · JSON
Stored site answers come back in milliseconds, for 0 credits.
Built and run by one person. Says so.

webscrapingapi.dev is a free web scraping API for developers and AI agents. It fetches any public page as HTML, text or markdown, extracts JSON with CSS selectors, reads page metadata, and offers ready-made JSON endpoints for sites it already knows. When a site can't be scraped with a plain request, you ask on the board and an endpoint gets built, or you're told why it can't be.

01

Sign in, make a key. Google or email. Shown once, starts with wsa_.

02

Send a URL or an ID. /v1/scrape for any page, /v1/structured/… for a known site.

03

Use the JSON. 50,000 credits a day, 60 requests a minute, 5 keys. Errors are a code and a sentence.

§ 01 — Site endpoints

Amazon, and the sites people fight with. Already parsed.

One ID in, one JSON out. Same key, one credit, stored and shared so the second person asking pays nothing. Pick a site to see exactly how it's called.

Request another site

Amazon product

GET /v1/structured/amazon/product

Title, price, availability, rating, images and the spec table for one product. Same field names as every other shop endpoint, with Amazon-only bits in extra.

Full spec →

Request

curl "https://api.webscrapingapi.dev/v1/structured/amazon/product?asin=B0B44XTV71&tld=com&currency=USD" \
  -H "X-API-Key: wsa_your_key"

Parameters

asinThe 10-character Amazon product id. Required.
tldMarketplace: com, co.uk, de, fr, it, es, ca, co.jp, in, com.au, com.mx, com.br, nl, ae, sa, se, pl. Default com.
currencyISO 4217 code for prices, e.g. USD, EUR, JPY. Default USD.
max_ageAccept a stored copy up to this many seconds old (credits: 0). Defaults to 86400 (24 h); 0 forces a fresh fetch.

Response

{
"site": "amazon",
"action": "product",
"data": {
"product": {
"name": "CUCKOO Twin Pressure Rice Cooker, 12-Cup, White",
"brand": { "name": "CUCKOO", "url": null },
"price": "339.99",
"currency": "USD",
"availability": "InStock",
"aggregateRating": { "ratingValue": "4.4", "reviewCount": 608 },
"images": [ "https://m.media-amazon.com/images/I/…jpg" ],
"features": [ "…", "…" ],
"sku": "B0B44XTV71"
},
"extra": { "asin": "B0B44XTV71", "tld": "com" }
},
"source": "cache", "age": 412, "credits": 0
}

Cached 24 h and shared: the first caller pays, everyone after pays 0 until it expires. Currency and language are set by cookie, not by IP. Amazon is reachable only some of the time from cloud IPs; a blocked fetch answers SITE_BLOCKED and is not charged.

§ 02 — Everything else, in one screen

Any page. Six ways to ask.

  1. Fetch. HTML, text or markdown with real browser headers. 1 credit.

  2. Render. render=true runs the JavaScript first. 5 credits.

  3. Extract. CSS selectors in, JSON out. Attributes, lists, nested.

  4. Metadata. Title, description, OG, JSON-LD from the head only.

  5. Stored. Site endpoints remember answers and say their age. Repeats cost 0; max_age=0 fetches fresh.

  6. Safe. Private networks blocked, 5 MB cap, 30 s timeout, raw pages never kept.

The complete reference lives in the docs, and a playground in the dashboard once you sign in. This page is the short version.

§ 03 — Requests, live

Can't get through? Ask. It gets built.

Post the site you need. I check it, build an endpoint when it can be done, and say so when it can't. Public or private, free either way. Every request ends as Done or Not possible, and you can see which.

Request a site
Requested Reviewing Building DoneorNot possible

01

Post the site. URL or pattern, e.g. amazon.com/dp/<asin>. Public or private.

02

It gets tried. Anti-bot sites may work only some of the time; you get told, not sold.

03

You get an endpoint. It takes only the part that changes. Private stays private.

StatusRequestResult

No requests yet. The first one starts the queue. Post a site →

Live from the board · public requests only · see all

Which site do you need?Post request

“I kept rewriting the same fetch-and-parse code for side projects, so I built the one I wanted and left it free. It's capped so it can stay that way.”
— Jaeyoung

§ 04 — Plain answers

Four questions people actually ask.

Is it really free?

Yes. 50,000 credits a day per account, no card, no trial that ends. The cap is what keeps it free.

Does it get past anti-bot systems?

Real browser headers and headless Chrome cover most sites. No CAPTCHA solving, no bypass of dedicated bot vendors, and it will not pretend otherwise.

How fresh is a site endpoint's data?

Results are stored and shared; every response says its source and age. A stored answer costs 0 credits. Pass max_age=0 to fetch fresh for 1 credit.

Sync or async?

Synchronous today: the answer comes back in the response, usually within a few seconds. Job ids and webhooks for batches are next, on the same endpoints.

Start with a URL.

Sign in, make a key, send a request. Ten seconds, and the first 50,000 credits are already there.

Get a free key