etsy.com APIetsy.com ↗
Access Etsy listings, shop profiles, reviews, and category browsing via a structured API. Search by keyword, filter by price, and retrieve full product details.
curl -X GET 'https://api.parse.bot/scraper/f1489504-16f1-487c-930b-1347ea210416/search_listings?page=1&query=leather+wallet' \ -H 'X-API-Key: $PARSE_API_KEY'
Search for product listings on Etsy by keyword. Returns paginated results with basic product information extracted from structured data. Supports optional price range and attribute filters.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number for pagination. |
| queryrequired | string | Search keyword (e.g. 'leather wallet'). |
| sort_on | string | Sort order. Accepted values: most_relevant, lowest_price, highest_price, date_desc. |
| max_price | string | Maximum price filter value. |
| min_price | string | Minimum price filter value. |
| is_vintage | string | Filter vintage items. Accepted values: true, false. |
| is_handmade | string | Filter handmade items. Accepted values: true, false. |
{
"type": "object",
"fields": {
"page": "string, the current page number",
"items": "array of product objects with name, url, image, description, price, currency, and listing_id",
"query": "string, the search keyword used"
},
"sample": {
"data": {
"page": "1",
"items": [
{
"url": "https://www.etsy.com/listing/1214703903/handmade-leather-bifold-wallet",
"name": "Handmade Leather Bifold Wallet: Personalized Front Pocket Card Holder",
"image": "https://i.etsystatic.com/33293494/r/il/6ad75b/3854048691/il_fullxfull.3854048691_hw4l.jpg",
"price": "33.25",
"currency": "USD",
"listing_id": "1214703903",
"description": null
}
],
"query": "leather wallet"
},
"status": "success"
}
}About the etsy.com API
The Etsy API gives developers access to 7 endpoints covering product listings, shop profiles, reviews, and category browsing on Etsy.com. The search_listings endpoint accepts keyword queries with optional price range, vintage, and handmade filters, returning paginated results with listing IDs, prices, images, and descriptions. From there, get_listing_details and get_listing_reviews let you drill into individual products and their buyer feedback.
Search and Browse Listings
The search_listings endpoint accepts a query string and optional parameters including min_price, max_price, is_vintage, is_handmade, and sort_on (accepted values: most_relevant, lowest_price, highest_price, date_desc). It returns a paginated array of product objects, each containing name, url, image, description, price, currency, and listing_id. The listing_id field is the key input for the detail and review endpoints. For navigating structured sections of the catalog, browse_category accepts a hierarchical category_path such as jewelry/necklaces and returns equivalent paginated product arrays.
Listing Details and Reviews
get_listing_details takes a listing_id and returns the full product record: name, description, price, currency, tags (array of strings), image (array of objects with contentURL and description), badges such as Bestseller, seller name, and shop_id. The shop_id field feeds directly into get_listing_reviews, which returns both all_shop_reviews_sample (up to 10 recent shop-level review objects with rating, review text, buyer name, and listing info) and listing_specific_reviews filtered to the exact listing.
Shop Data
get_shop_info retrieves a shop's profile by shop_name, returning url, logo, rating, review_count, and shop_id. get_shop_listings paginates through a shop's active products, returning name, url, image, price, and currency for each item. search_shops accepts a keyword query and returns matching shops as an array of shop_name and url objects, supporting both single-word and multi-word queries.
- Aggregate Etsy price data across a keyword category using
search_listingswithmin_priceandmax_pricefilters - Monitor a specific shop's active inventory by paginating
get_shop_listingsover time - Pull buyer reviews and ratings for a listing via
get_listing_reviewsto feed a sentiment analysis pipeline - Build a handmade-goods discovery tool using the
is_handmadeandis_vintagefilters onsearch_listings - Enrich product catalog data with tags, badges, and full descriptions from
get_listing_details - Find competitor shops in a niche by querying
search_shopswith a category keyword - Browse structured Etsy categories with
browse_categoryto build a category-mapped product index
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 250 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Etsy have an official developer API?+
What does `get_listing_reviews` actually return, and how does filtering work?+
get_listing_reviews returns two separate arrays: all_shop_reviews_sample contains up to 10 recent reviews at the shop level (each with rating, review text, buyer name, and associated listing info), while listing_specific_reviews contains only reviews matched to the provided listing_id. Supplying the shop_id parameter (available from get_listing_details) improves the accuracy of that filtering.Does the API return seller transaction history or order data?+
How deep does category browsing go, and what format does `category_path` expect?+
browse_category accepts a forward-slash-delimited path string such as clothing/womens-clothing/dresses or jewelry/necklaces. It returns paginated product objects with name, url, image, price, and currency. The endpoint mirrors Etsy's public category hierarchy, so valid paths follow the same structure you see in Etsy URLs.Does the API return listing variation data such as size or color options?+
get_listing_details returns top-level product fields including name, description, price, tags, images, and badges, but per-variation inventory and option sets are not included. You can fork this API on Parse and revise it to add a variations endpoint targeting that data.