Etsy Scraper
Pricing
from $2.50 / 1,000 listing extracteds
Etsy Scraper
Search Etsy by keyword and get prices, in-cart counts, last sale time, sponsored vs organic rank, stock, discounts, shop sales and badges. Optional tags, favorites and description. No login. Pay only for results.
Pricing
from $2.50 / 1,000 listing extracteds
Rating
0.0
(0)
Developer
axly
Maintained by CommunityActor stats
7
Bookmarked
140
Total users
11
Monthly active users
5 days ago
Last modified
Categories
Share
Etsy Product Scraper — Extract Listings, Prices & Seller Data
Extract Etsy product listings at scale via keyword search. No API key or Etsy login. Every listing comes with the demand signals product researchers look for: how many people have it in their cart right now, when it last sold, whether the placement is a sponsored ad or an organic result, its position in Etsy's results, stock, discount and promotion end time, shop sales and review counts, Bestseller and Star Seller badges. Switch on listing details to also get the 13 tags, materials, favorites and the full description.
What Data You Get
Every result includes:
| Field | Description |
|---|---|
listing_id, title, url | Listing identity and link |
shop_name, shop_url, shop_id | Seller shop |
price | What the buyer pays now (the sale price when a promotion applies) |
original_price, discount_percent, promotion_ends_at | List price, discount % and when the sale ends (when discounted) |
in_cart_count | People who currently have the listing in their cart |
last_sale_at | When the listing last sold (ISO 8601, UTC) |
result_type | ad (sponsored placement) or organic |
search_position | Position in Etsy's result list for the query (ads included) |
quantity, is_sold_out | Stock |
sales_count_estimate | The shop's total sales |
review_count, avg_rating | Shop review count and average rating |
review_photo_count, review_video_count | Reviews with photos / videos for the listing |
is_bestseller, is_star_seller | Badges |
is_made_to_order, personalization_available, is_handmade, is_vintage, is_digital | Product type flags |
shipping, shop_location | Shipping options and seller location |
images, thumbnail | Image URLs |
currency_code, scraped_at | Currency and extraction time |
With Include tags, materials, favorites & description (includeDetails) every row also gets:
| Field | Description |
|---|---|
tags | The listing's 13 seller tags |
materials | Materials |
favorites_count | Number of favorites |
description | Full listing description (plain text) |
when_made, ships_from_country | Production type and ship-from country |
details_fetched | true when the details were returned |
Use Cases
Dropshipping product research
Collect a niche, then filter on is_star_seller, is_bestseller and in_cart_count to build a qualified product list with verified demand signals — without manually browsing Etsy.
Competitor price monitoring
Run the same keyword search on a schedule and track price changes across competitors. Export to Google Sheets via the Apify integration.
Market trend analysis
Compare favorites_count and review_count across categories to identify emerging niches before they saturate.
Feed AI agents and dashboards
Use the Apify MCP server to connect this actor to Claude, ChatGPT, or n8n workflows for on-demand Etsy market intelligence.
Supplier qualification
Find high-volume sellers (high review_count, is_star_seller: true) for potential sourcing partnerships.
How to Use
Set your search parameters in the input and run. No configuration beyond the keywords is required to get results.
Input parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
keywords | string | required | Search query, e.g. "handmade ceramic mug" |
limit | integer | 100 | Maximum listings to collect (0 = as many as the run can reach, cap 100,000) |
offset | integer | 0 | Deprecated, ignored (Etsy search has no paging) |
minPrice | number | — | Minimum price in USD |
maxPrice | number | — | Maximum price in USD |
shipTo | string | "US" | Shipping destination country code (US, GB, CA, AU, etc.) |
sortOn | enum | "score" | score (relevance), created_desc (newest first), price_asc, price_desc; best_seller behaves like score |
freeShipping | boolean | false | Free-shipping listings only |
isDiscounted | boolean | false | On-sale listings only |
instantDownload | boolean | false | Digital download listings only |
includeDetails | boolean | false | Add tags, materials, favorites and description to every row (one extra request per listing) |
Example input
{"keywords": "personalized gift","limit": 500,"minPrice": 15,"maxPrice": 60,"shipTo": "US","sortOn": "score","freeShipping": true,"isDiscounted": false}
Example Output
{"listing_id": "4385436268","title": "Custom Ceramic Mug, Personalized Name Coffee Cup","url": "https://www.etsy.com/listing/4385436268/...","shop_name": "VisionCustomTee","price": 5.07,"original_price": 14.5,"discount_percent": 65,"promotion_ends_at": "2026-10-08T04:59:59Z","in_cart_count": 118,"last_sale_at": "2026-10-07T22:47:09Z","result_type": "ad","search_position": 1,"quantity": 856,"sales_count_estimate": 34451,"review_count": 5759,"avg_rating": 4.85,"review_photo_count": 31,"is_bestseller": true,"is_star_seller": true,"is_made_to_order": true,"personalization_available": true,"tags": ["Personalized Mug", "Custom Ceramic Mug", "Custom Coffee Mug"],"favorites_count": 449,"details_fetched": true,"scraped_at": "2026-10-08T09:13:38Z"}
tags, favorites_count and details_fetched appear when includeDetails is on. The values come from a real run; the tag list is shortened.
Checkpoint & Resume
For large runs, the actor saves its progress after each page. If a run is interrupted, re-run with the same keywords input and the actor will automatically continue from where it stopped — no duplicate data, no lost progress.
Automate with Scheduling & Webhooks
Schedule recurring runs to track price trends or monitor new listings:
- Open your actor run → Schedule tab
- Set a CRON expression, e.g.
0 8 * * 1for every Monday at 8am - Configure a webhook to POST results to your endpoint or trigger a Make.com / Zapier workflow
API trigger example:
curl -X POST "https://api.apify.com/v2/acts/axlymxp~etsy-scraper/runs" \-H "Authorization: Bearer YOUR_API_TOKEN" \-H "Content-Type: application/json" \-d '{"keywords": "handmade candle", "limit": 1000}'
Use with AI Agents (MCP)
This actor is available on Apify's MCP Server. Connect it to Claude, ChatGPT, or any MCP-compatible AI agent to enable on-demand Etsy market research inside your AI workflows.
Configure at: mcp.apify.com
Example agent prompt:
"Find the top 20 best-selling personalized jewelry listings on Etsy under $50 with free shipping."
FAQ
Does this actor work without an Etsy API key? Yes. This actor accesses Etsy's publicly available marketplace data without requiring an Etsy developer account or API key.
Can I filter by free shipping, discounts, or digital products?
Yes. Use the freeShipping, isDiscounted, and instantDownload input parameters.
What countries does the data cover?
Etsy is a global marketplace. Use the shipTo parameter to filter by shipping destination (US, GB, CA, AU, DE, FR, and any other ISO country code).
Does the actor resume if a run is interrupted? Yes. The actor saves a checkpoint after every batch of listings. Re-run with the same search input to continue; listings already delivered are not pushed or charged again.
How many listings can I get for one keyword?
Etsy's app search answers about 36 listings per request and has no paging. The actor therefore slices the search into price bands and combines relevance, newest-first and price-order searches, removing duplicates, to reach more listings. Popular keywords can reach thousands of distinct listings per run; narrow keywords have fewer, and the run ends with a status message when Etsy has nothing more to reveal. With the default sort the first rows are Etsy's own first results, followed by the top results of each price band and then deeper rankings. search_position is Etsy's real rank for those first results and is left out for listings found through the newest-first or price-band searches.
What do in_cart_count, last_sale_at and result_type tell me?
in_cart_count is how many shoppers currently have the listing in a cart, last_sale_at is when it last sold, and result_type shows whether Etsy served the result as a sponsored ad or an organic result. Together they show which products are selling right now and who is paying for placement.
Why can the same listing appear twice?
Etsy can show a listing once as an ad and once as an organic result. Filter on result_type or de-duplicate on listing_id if you only want one row per listing.
What are is_star_seller and is_bestseller?
is_star_seller reflects Etsy's Star Seller badge (awarded to shops with consistently high ratings and fast shipping). is_bestseller is the orange Bestseller badge on individual listings. Both are strong signals for dropshipping qualification.
Is this legal to use? This actor scrapes publicly available data from Etsy.com. Use in accordance with Etsy's Terms of Service and applicable laws.
How is this different from using the Etsy API? The official Etsy API requires developer registration and has strict rate limits. This actor does not require an API key and can extract at much higher volume for market research purposes.