Search 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.
/v1/etsy/searchx-api-keyHeaders
Get your API keyYour ScrapeAtlas customer key. Create one on /account/ and set SCRAPEATLAS_API_KEY.
Search text (1-200 characters).
min 1 chars · max 200 chars
example queryResults page starting at 1.
default: 1 · 1 – 250
most_relevant (default), price_low, price_high, highest_reviews or most_recent.
one of: most_relevant, price_low, price_high, highest_reviews, most_recent · default: "most_relevant"
Optional.
0 – 1000000
Optional.
0 – 1000000
Display currency pinned through Etsy's own locale override (default USD). One of the 30 currencies Etsy offers; language and region stay en-US / US.
one of: AUD, BRL, CAD, CHF, CNY, CZK, DKK, EUR, GBP, HKD, HUF, IDR, ILS, INR, JPY, MAD, MXN, MYR, NOK, NZD, PHP, PLN, SEK, SGD, THB, TRY, TWD, USD, VND, ZAR · default: "USD"
Request correlation UUID.
Upstream document reads (a DataDome device check adds one; sorted or deep pages add the page-one primer), decoded bytes delivered to the parser and elapsed milliseconds.
Always included.
≥ 0
Always included.
≥ 0
Always included.
≥ 0
True when usable public data is returned; inspect status and coverage for omissions.
success, partial, failed or challenged. HTTP 200 can be partial.
one of: success, partial
Canonical public Etsy URL the response describes, without locale or tracking parameters.
absolute HTTPS URL
UTC retrieval timestamp.
Complete means every supported field on this page was read; warnings name each omission or cap. It never implies the shop's or query's full catalogue.
Always included.
one of: public_page, public_api
Always included.
Always included.
Search text (1-200 characters).
most_relevant (default), price_low, price_high, highest_reviews or most_recent.
one of: most_relevant, price_low, price_high, highest_reviews, most_recent
Results page starting at 1.
≥ 1
Always included.
Always included.
Organic result listing IDs in ranking order.
up to 48 items
Organic listings in ranking order (id, url, title, seller, shopId, price with list price as original, image, rating and badges). The first products come from the page's structured data, where rating, badges and shopId are null or false; the rest are Etsy's own listing cards.
up to 48 items
Always included.
Always included.
absolute HTTPS URL
Always included.
Always included.
Always included.
Always included.
Always included.
Always included.
Always included.
Always included.
Always included.
Always included.
Always included.
Always included.
Always included.
Always included.
Always included.
Promoted listing cards with shop name, rating, prices, discount and badges (isAd true).
up to 48 items
Always included.
Always included.
absolute HTTPS URL
Always included.
Always included.
Always included.
Always included.
Always included.
Always included.
Always included.
Always included.
Always included.
Always included.
Always included.
Always included.
Always included.
Always included.
Always included.
No fields match.
HTTP 200 returns the success variant. Check status: partial means usable data with warnings, and failed or challenged requests carry a failure object described in Errors & responses.
| 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. |