List 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.
/v1/etsy/shop/listingsx-api-keyHeaders
Get your API keyYour ScrapeAtlas customer key. Create one on /account/ and set SCRAPEATLAS_API_KEY.
Etsy shop name as it appears in etsy.com/shop/{handle} (letters and digits); provide either handle or url.
ExampleCraftShopFull shop URL: https://www.etsy.com/shop/{handle}, a regional prefix such as /uk/shop/{handle}, or https://{handle}.etsy.com.
max 2048 chars
Page number starting at 1 (36 items per page, at most 250 pages).
default: 1 · 1 – 250
most_recent (default, Etsy date_desc), price_low, price_high or custom (the shop owner's arrangement).
one of: most_recent, price_low, price_high, custom · default: "most_recent"
Numeric shop section ID from the shop endpoint; omit for all items.
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 read), 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.
Always included.
Always included.
Always included.
Always included.
absolute HTTPS URL
Always included.
Always included.
Always included.
most_recent (default, Etsy date_desc), price_low, price_high or custom (the shop owner's arrangement).
one of: most_recent, price_low, price_high, custom
Page number starting at 1 (36 items per page, at most 250 pages).
≥ 1
Always included.
≥ 0
Always included.
≥ 2
Items in the requested scope (shop total or section count).
≥ 0
Always included.
up to 36 items
Always included.
Always included.
absolute HTTPS URL
Always included.
Always included.
Always included.
Always included.
Always included.
≥ 0
Always included.
≥ 0
Always included.
Always included.
0 – 100
Always included.
Always included.
Always included.
0 – 5
Always included.
≥ 0
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. |