Etsy API Scraper
Pricing
from $0.50 / 1,000 search result (plp) rows
Etsy API Scraper
Scrapes Etsy category tree, search results, listing details, and reviews via the Etsy Android app's private signed API.
Etsy API Scraper
Pricing
from $0.50 / 1,000 search result (plp) rows
Scrapes Etsy category tree, search results, listing details, and reviews via the Etsy Android app's private signed API.
What to scrape. SHOP returns one row per Etsy shop: scale, ratings, location, policies and story, from the shop's own profile.
Free-text search query. Used in FULL and SEARCH modes.
Restrict search to this category, or root the category tree crawl here (TAXONOMY mode). Leave empty to crawl the full tree / search without a category filter.
Search result ordering field.
Max number of PLP results to collect (SEARCH and FULL modes).
Listing IDs to fetch directly, one per line. Used in LISTING_DETAILS mode.
[]In FULL mode, how many of the search results get a follow-up PDP + reviews fetch (the rest stay as search-result cards only).
Cap on reviews fetched per listing (FULL and LISTING_DETAILS modes). 0 disables review fetching.
Shops to profile — a shop name (gfashionstyle), a numeric shop id, or an etsy.com/shop/<name> URL, mixed freely. A name must match exactly: Etsy's own search box is fuzzy and answers PlanetPrintsCo with OnePlanetPrintsCo, so a near-miss is reported rather than scraped. Ids and URLs always resolve.
ISO country code used for shipping-aware search results.
Etsy's own locale triple, which is what decides the currency prices come back in — shipTo does not override it. Defaults to USD|en-US|US. Use EUR|en-US|NL for euros or GBP|en-GB|GB for pounds. Search rows carry the rendered price, a parsed priceValue and the currency symbol, because Etsy no longer sends a currency code.
Defaults to Apify's shared datacenter proxy, which is about 11x cheaper per row. This field used to say residential was required because Etsy blocks datacenter IPs — measured 2026-10-18, that is not true of search: 300 rows came back through the datacenter pool in 20 s with no refusals. It is true of SHOP mode, whose endpoint returns HTTP 429 after a handful of datacenter requests, so SHOP runs switch themselves to RESIDENTIAL unless you name a group here. Name one to override that, or if you need a specific country.
{ "useApifyProxy": true}