Shopping
Etsy API
Retrieve public Etsy shop profiles, shop listings, shop reviews, full listing pages, listing reviews, similar listings, search results and search suggestions as structured JSON with prices pinned to a chosen currency.
Read Etsy shops, listings, listing reviews, similar listings, reviews, search results and autocomplete suggestions.
API availability: Available
http://localhost:3032Public API: https://api.scrapeatlas.com.Endpoints
/v1/etsy/shopGet an Etsy shop profile
Read a public Etsy shop home page: identity, headline, location, images, sales and admirer counts, star seller status, aggregate rating, item sections with counts, the announcement, latest activity, shop members, FAQ, policy date and the featured listing cards.
Reference/v1/etsy/shop/listingsList an Etsy shop's items
Read one page of a shop's public item grid: 36 listing cards with canonical URLs, prices, discounts, images and badges, plus the shop section, sort, page and total pages.
Reference/v1/etsy/shop/reviewsList an Etsy shop's reviews
Read a page of shop reviews, newest first, with reviewer, date, rating, text, purchased listing, seller response and shop rating.
Reference/v1/etsy/listingGet an Etsy listing
Read a public listing page: title, description, seller, prices and discounts, price range across variations, rating and review counts, gallery, availability and quantity, favourites, categories, item highlights and materials, variations with option prices, shipping origin and cost, returns policy, the embedded reviews and FAQ.
Reference/v1/etsy/listing/reviewsGet Etsy listing reviews
Read one page of a listing's buyer reviews (eight per page) with its average rating, review count, count per star, summarised review tags and total pages. Sort by suggested, most recent, highest or lowest rating, or filter to one star rating.
Reference/v1/etsy/listing/similarGet similar Etsy listings
Read the listings Etsy recommends next to a public listing: up to 24 similar items and the promoted listings shown with them, as listing cards with canonical URL, title, shop ID, prices in the chosen currency, discount, image and badges.
Reference/v1/etsy/searchSearch Etsy listings
Read one Etsy search results page for a query: the ordered organic listing IDs (up to 48), a listing card for every organic result with shop, prices, discount, rating and badges, every promoted listing card and the total page count. organic_results_partially_embedded marks a page whose remaining organic IDs came back without card data.
Reference/v1/etsy/search/suggestionsGet Etsy search suggestions
Retrieve Etsy search autocomplete terms for a partial query.
ReferenceQuick start
Create an API key on your account page, then call the public API. Values below are placeholders.
curl "https://api.scrapeatlas.com/v1/etsy/shop?handle=ExampleCraftShop" \
-H "x-api-key: YOUR_API_KEY"Coverage & limits
- Independent worker on port 3032, ETSY_API_KEY in x-api-key. No login, persistent cookies, proxy, storage, media download, Etsy developer key or product dependencies.
- Eight concurrent operations of which at most two browser device checks run at once (reads that waited for one reuse the session it cleared), 45-second total deadline, at most ten Etsy reads per operation (the requested page, the device-check re-read, up to two canonical redirect hops, the page-one primer that sorted or deep search pages use, one transient retry, and through a proxy up to two fresh exits). Challenges answered by Etsy itself, rate limits and 4xx answers are never retried.
- Documents and Etsy's own script-data modules (lazy search cards, similar listings, listing reviews) are read over plain HTTPS with a session a browser cleared earlier: at most three sessions in process memory (three cookie pairs and a CSRF nonce each, never content), 30 minutes or 300 reads each. When no session is usable, or Etsy refuses one, the read drives a fresh headed Patchright Chromium: only Etsy documents and the challenge vendor (captcha-delivery.com) may leave the process, subresources and third parties are refused, and the final document is taken from the network before rendering. The device check must clear within 15 seconds; a visible puzzle fails as upstream_challenged. ETSY_PROXY_URL (with an optional per-read session username template) routes the whole browser through a residential proxy; Linux containers enable Chromium's software WebGL for the check and require Xvfb; readiness checks the browser binary and display.
- 3 MiB decoded HTML per operation, 400,000 parsed nodes, depth 128; 36 listing cards, 24 similar listings, 8 listing reviews and 20 review tags per page, 14 reviews, 48 organic IDs and 20 suggestions per page; pages 1-250.
- Prices are pinned with Etsy's locale_override query parameter (currency|en-US|US); no preference cookie is stored. Search pages carry structured data for their first organic products and the ordered IDs of the rest (organic_results_partially_embedded). Sorted or deep search pages are read after the query's first page in the same browser session.
- Shop and listing identities are verified against the request; mismatches fail unsupported_page. Same-origin redirects are followed only to the shop's canonical casing or the listing's slugged path.
- The listing reviews module needs the shop ID next to the listing ID: the pair is read from the listing page once and remembered in process memory (identifiers only, at most 5,000 pairs, 24 hours, oldest evicted first); a miss reads the listing page again.
| HTTP | failure.code | Meaning |
|---|---|---|
| 400 | invalid_request | Missing, duplicate, ambiguous or unsupported parameters, unsupported URL forms, currencies or sorts. |
| 401 | unauthorized | Invalid API key. |
| 404 | not_found | Unknown shop, listing or reviews page. |
| 429 | upstream_rate_limited | Etsy rate limited the request. |
| 502 | upstream_challenged | Etsy's DataDome check did not clear (status challenged). |
| 502 | unsafe_redirect | Etsy redirected outside the requested resource (for example a removed listing's error page). |
| 502 | unsupported_page | Layout, identity or structured-data checks failed, or a non-HTML document was served. |
| 502 | response_too_large | The page exceeded 3 MiB. |
| 502 | payload_too_complex | The page exceeded parsing limits. |
| 502 | request_limit | The upstream document budget was exhausted. |
| 502 | upstream_error | Network failure or an unexpected upstream status after one retry. |
| 503 | busy | Both retrieval slots are occupied. |
| 504 | timeout | The 45-second deadline elapsed. |