Etsy API
Listing search, full product detail, shop storefronts, a shop's whole catalogue and shop-wide paginated reviews — each one a single POST returning structured JSON. No other unified API covers Etsy at all.
50 free credits on signup. No card, no Etsy developer app.
{ "data": { "query": "ceramic mug", "page": 1, "listings": [ { "pos": 1, "listing_id": "1510223855", "title": "The Libby Travel Mug hand thrown ceramic mug cup Pottery Travel Mug Cup", "url": "https://www.etsy.com/listing/1510223855/", "image_url": "https://i.etsystatic.com/8740835/r/il/d4f720/7239142492/il_255x319.jpg", "price": { "amount": 34.5, "currency": "USD", "original_amount": null, "discount_pct": null, "on_sale": false }, "shop": { "id": "8740835", "name": "StonehousePotteryOH" }, "rating": 4.9, "review_count": 16600, "is_ad": false, "free_shipping": false } ] }, "response_time": 2043, "credits_used": 2, "credits_remaining": 4738}A real captured response from this endpoint. Sign up to run your own.
What is the Scavio Etsy API?
The Scavio Etsy API is a REST API that returns public Etsy data as structured JSON. You send a keyword, listing id or shop name to one of 5 POST endpoints with your API key, and get back listing search results, full product detail, shop storefront data, a shop's active listings, or shop-wide paginated reviews.
- 5
- endpoints, all live in production
- 2
- credits per call, every endpoint
- 0
- other unified APIs cover Etsy
The four you'll reach for first
Search finds it, detail describes it, shop tells you who's behind it, reviews tell you what buyers think.
Search
POST /api/v1/etsy/searchListings by keyword with price, rating and shop attached, plus real server-side filters for price range, free shipping and on-sale.
Listing detail
POST /api/v1/etsy/productOne item in full — description, material, category path, variations, the whole image set and the first page of reviews.
Shop
POST /api/v1/etsy/shopA seller's storefront: lifetime sales, admirers, rating, location, opened year and every shop section. Nobody else sells this.
Reviews
POST /api/v1/etsy/reviewsShop-wide reviews, paginated, each one linked back to the listing it is about — a feed you cannot get anywhere else as JSON.
All 5 Etsy endpoints
Every route is a POST, returns JSON, and takes the same API key. 2 credits per successful call.
| Endpoint | Returns | Credits |
|---|---|---|
Search/api/v1/etsy/search | Listings by keyword — title, price, sale flags, rating, shop; price, shipping and sale filters | 2 |
Listing detail/api/v1/etsy/product | One listing in full — price, description, material, category path, variations, every image, first reviews | 2 |
Shop/api/v1/etsy/shop | Seller storefront — sales count, admirers, rating, location, opened year, sections, star-seller flag | 2 |
Shop listings/api/v1/etsy/shop/products | Every active listing in a shop, paginated — title, price, image, ids | 2 |
Reviews/api/v1/etsy/reviews | Shop-wide reviews, paginated — rating, author, date, text, each linked to its source listing | 2 |
50 free credits on signup covers 25 calls of any kind. See plans
Search a category, then mine a shop's reviews
Filter listings server-side, then page a whole shop's reviews. The response on the right is a real capture, field names and all.
from scavio import ScavioClient
client = ScavioClient(api_key="sk_live_your_key")
# Search with real server-side filters
res = client.etsy.search(query="ceramic mug", on_sale=True)
for p in res["data"]["listings"]:
print(p["listing_id"], p["price"]["amount"], p["title"][:40])
# Then walk a shop's reviews, page by page
reviews = client.etsy.reviews(shop="StonehousePotteryOH", page=1)
for r in reviews["data"]["reviews"]:
print(r["rating"], r["author"], r["text"][:60]){
"data": {
"query": "ceramic mug",
"page": 1,
"listings": [
{
"pos": 1,
"listing_id": "1510223855",
"title": "The Libby Travel Mug hand thrown ceramic mug cup Pottery Travel Mug Cup",
"url": "https://www.etsy.com/listing/1510223855/",
"image_url": "https://i.etsystatic.com/8740835/r/il/d4f720/7239142492/il_255x319.jpg",
"price": {
"amount": 34.5,
"currency": "USD",
"original_amount": null,
"discount_pct": null,
"on_sale": false
},
"shop": { "id": "8740835", "name": "StonehousePotteryOH" },
"rating": 4.9,
"review_count": 16600,
"is_ad": false,
"free_shipping": false
}
]
},
"response_time": 2043,
"credits_used": 2,
"credits_remaining": 4738
}Why not Etsy's Open API?
It exists, and it is built for managing your own shop — not for researching everyone else's.
Etsy Open API v3
- Requires a registered application, an OAuth flow and approval before you can call it
- Oriented around a shop that has authorised your app, not open browsing of arbitrary public shops
- No plain endpoint for shop-wide reviews across every listing
- Rate limited per application, with keys and tokens to issue and refresh
Scavio Etsy API
- One API key, issued at signup — no app, no OAuth, no approval
- Any public listing, shop or review by keyword, id or shop name
- Shop data and shop-wide paginated reviews nobody else sells as JSON
- Same key and JSON envelope as 30 other Scavio platforms
Scavio returns publicly available data only, and never authenticates as an Etsy user.
What developers build with it
Handmade and vintage market research
Search a category and read real prices, ratings and review counts across hundreds of listings, then size demand and pricing bands before you list a single product of your own.
searchSeller and competitor intelligence
Resolve any shop to its lifetime sales, admirer count, rating and section structure, then pull every active listing to map a competitor's full catalogue and price ladder.
shop + shop/productsReview mining and product feedback
Page a shop's entire review history — each review linked to the listing it is about — and feed the text to an LLM for complaints, sizing issues, shipping themes or purchase intent.
reviews + productPrice and sale tracking
Run a set of listings on a schedule and diff the results. The price object carries original_amount, discount_pct and an on_sale flag, so markdown depth falls out of a single call.
search + productCatalogue and enrichment feeds
Pull full listing detail — material, category path, variation options with ids and the complete image set — to enrich an internal product feed or seed a marketplace comparison.
productAgent shopping and research tools
Point an agent at the MCP server and Etsy becomes a callable tool — find this, what does this shop sell, what do buyers say — with one key and the same JSON as every other platform.
MCP + RESTHow to get Etsy data as JSON
- 1
Get an API key
Sign up for a Scavio account and copy your key from the dashboard. You get 50 credits free on signup, with no card required and no Etsy developer application.
- 2
POST a keyword, listing or shop
Send {"query": "ceramic mug"} to https://api.scavio.dev/api/v1/etsy/search with an Authorization: Bearer header. All five endpoints are POSTs and take a keyword, listing id or URL, or a shop name.
- 3
Read the JSON
The response wraps the payload under data, plus credits_used and credits_remaining. Search, shop listings and reviews all carry page, so you page by incrementing page on the next call.
Etsy API FAQ
What is the Scavio Etsy API?
+
It is a REST API that returns public Etsy data as structured JSON. Five POST endpoints cover listing search, full listing detail, shop storefront data, a shop's active listings, and shop-wide paginated reviews. You authenticate with a Scavio API key and never handle Etsy credentials.
Is there really no other API that covers Etsy?
+
Not as a unified sync REST API. Etsy exists elsewhere only as a product-parse-only endpoint, or an async dataset that returns products alone, or a tail of one-off actors. A single key that returns search, listing detail, shop data, shop listings and paginated reviews together is first of its kind — and shop data and shop-wide reviews are the two pieces nobody else sells at all.
Who are these endpoints for?
+
Handmade and vintage sellers researching pricing and demand; developers building marketplace, comparison or valuation features; AI agent builders wiring Etsy in as an MCP or SDK tool; automation engineers running catalogue and price checks inside n8n, Zapier or Make; and analysts mining shop reviews for product feedback. Same API for all of them — what changes is which of the five endpoints you call.
Can I get a shop's reviews, not just a listing's?
+
Yes, and it is one of the main reasons to use this. The reviews endpoint returns a shop's reviews across all of its listings, paginated, with each review linked back to the specific listing it is about. The listing detail endpoint also returns the first page of reviews for a single item.
Do the search filters actually work server-side?
+
Yes. Price range, free shipping and on-sale are real filters applied at the source, not post-filtering of a full result set — so on_sale: true returns only discounted listings, and each result carries original_amount and discount_pct so you can see the markdown.
How is this different from Etsy's official Open API?
+
Etsy's Open API v3 requires a registered application, an OAuth flow, and approval before you can call it, and much of it is oriented around a shop that has authorised your app rather than open browsing of arbitrary public shops and reviews. Scavio needs no app, no OAuth and no approval: sign up, take the key, send a keyword or shop name.
How much does an Etsy request cost?
+
Every Etsy endpoint costs 2 credits per successful call — search, listing detail, shop, shop listings and reviews alike. New accounts get 50 free credits on signup, one time, with no card required. Paid plans start at $30 per month for 7,000 credits.
What does the response look like?
+
The API wraps the payload under a data key and adds credits_used and credits_remaining. A search listing carries listing_id, title, url, image_url, a price object with amount, currency, original_amount, discount_pct and on_sale, a shop object, rating and review_count. Shop data adds sales_count, admirers_count, location, opened_since and sections.
Do prices come back in a single currency?
+
Listing and search results return the price amount with its currency code on the price object, so a stored response is self-describing. Read amount and currency together rather than assuming a fixed currency.
Which languages and tools are supported?
+
Official Python (pip install scavio) and JavaScript/TypeScript (npm i scavio) SDKs, a remote MCP server at mcp.scavio.dev for AI agents, and an n8n community node. Any language can call the REST endpoints directly with an HTTP client.
Is scraping Etsy data legal?
+
Scavio returns publicly available listing, shop and review data and does not access private account data or authenticate as a user. You remain responsible for how you use the data, including compliance with Etsy's terms and with privacy law where personal data is involved. Talk to your own counsel for your specific use case.
Explore more of Scavio
eBay API
Live and SOLD listings, item detail and sellers.
Amazon API
Search, product detail and every seller offer.
Walmart API
Search, product, reviews and sellers.
Google Shopping API
Products, prices and every seller.
MCP server
Every platform as a callable tool for agents.
Pricing
Credit packs and plans, no per-platform surcharge.
Start pulling Etsy data today
50 free credits on signup, no card. Your first request is a POST with a keyword in it.