Etsy Scraper: Search Listings, In-Cart Counts, Ads & Tags avatar

Etsy Scraper: Search Listings, In-Cart Counts, Ads & Tags

Pricing

from $2.00 / 1,000 listing saveds

Go to Apify Store
Etsy Scraper: Search Listings, In-Cart Counts, Ads & Tags

Etsy Scraper: Search Listings, In-Cart Counts, Ads & Tags

Scrape Etsy search results for any keyword: price, rank, ad slots, live in-cart counts, 24h sales, tags and each shop's total sales. Goes past Etsy's ~1,000-result limit per search. No login. Export to JSON, CSV or Excel.

Pricing

from $2.00 / 1,000 listing saveds

Rating

0.0

(0)

Developer

Epic Scrapers

Epic Scrapers

Maintained by Community

Actor stats

1

Bookmarked

111

Total users

47

Monthly active users

6 days ago

Last modified

Categories

Share

Etsy Scraper: keyword and product research with live cart counts, tags, ranks and shop sales

Etsy Scraper turns any Etsy keyword search into a spreadsheet for product research, Etsy SEO and rank tracking. You get every listing a shopper sees, with its search rank and ad slot. Each listing also has the numbers Etsy itself publishes: how many people have it in their cart right now, how many bought it in the last 24 hours, all 13 of its tags, its favorites, and its shop's total sales.

  • Real Etsy figures, not estimates. Cart counts, 24-hour sales, shop sales, tags and favorites come straight from Etsy. Nothing is modeled or guessed.
  • No 1,000-result limit. Etsy stops every search at about 1,000 results, and a scraper that just pages through the search stops there too. This actor splits large searches by price, so a broad keyword returns several thousand unique listings.
  • Exact cart counts. inCartCount is Etsy's own number, such as 298, not the rounded "In 20+ carts" label shown on the website.
  • Built for repeated runs. Schedule it daily or weekly and compare runs to see what's selling, how ranks move and who is buying ads.
  • Pay per listing, no subscription. $8 per 1,000 listings with full details, or $2 per 1,000 for search data only. No Etsy account, API key, browser extension or proxy setup. Export to JSON, CSV, Excel or Google Sheets.

Scope: This actor searches by keyword. To scrape a known shop's listings, profile or reviews, use Etsy Shop Scraper.

What can you do with Etsy Scraper?

GoalHow
Product research: find what sellsSearch a niche and sort by inCartCount or boughtLast24h.
Etsy SEO and tag researchCollect the tags, titles and categories of the listings that rank first for your keywords.
Etsy rank checkerSchedule your keywords daily and follow your listings' searchRank over time.
Etsy cart counterRead the live inCartCount of every listing in a search instead of opening them one by one.
Watch competitors' adsSee which listings are paid placements (isAd) and where they appear (page, pagePosition).
Measure real shop salesSchedule a run and subtract yesterday's shopSales from today's. That's the shop's actual sales for the day, not an estimate.
Price a productCollect prices, sale prices and discounts across a niche, filtered by price range, shipping country or shop location.

How it compares

What you needEtsy ScraperPage-by-page Etsy scrapersResearch subscriptions (eRank, EverBee, Marmalead)
Listings per keywordSeveral thousand (searches split by price)About 1,000, Etsy's limitWhat the tool chooses to show
Cart countsExact, for every listingOften missing or rounded ("20+")Varies by tool
Sales dataEtsy's own counters: shop sales, 24-hour sales, last saleVariesOften a modeled estimate
TagsAll 13 per listingOften missingYes
Raw data for your own analysisEvery field, as JSON, CSV, Excel or APIYesLimited exports, mostly dashboards
PricePay per listingPay per listingMonthly subscription

An alternative to Etsy research subscriptions

Tools such as eRank, EverBee and Marmalead are monthly subscriptions built around dashboards, and some of them estimate a listing's sales with a model, because Etsy doesn't publish per-listing sales. Estimates can be far off in either direction, and different tools often disagree. This actor reports only what Etsy publishes: the shop's total sales count, the live in-cart count, the "bought in the last 24 hours" message, favorites, ratings and tags. You pay only for the listings you collect, and you get the raw data to analyze in a spreadsheet, a BI tool or an AI assistant. If you need sales over a period, the scheduled-run recipe below gives you exact shop-level numbers from Etsy's own counter.

Quick start

  1. Click Try for free and sign in to Apify. The free plan's monthly credit covers about 600 listings with details.
  2. Add one or more keywords to Search keywords, for example ceramic mug. Use short phrases a shopper would type.
  3. For a first run, set Max results per search to 20.
  4. Click Start. When the run finishes, open the Output tab and export the data.
{
"queries": ["ceramic mug"],
"maxResultsPerQuery": 20
}

What data can you extract?

Every row is one listing. These fields come from the search results page:

GroupFields
ListinglistingId, title, url, price, salePrice, discount, currency, hasVariations, isEtsysPick
Searchquery, searchCategory, searchRank, page, pagePosition, isAd
ShopshopId, shopRating, shopReviewCount
Mediathumbnail, imageUrl, imageCount, hasVideo

With Include listing details on (the default), each row also has:

GroupFields
DemandinCartCount (shoppers with it in their cart now), boughtLast24h, demandMessage, lastSaleAt, favorites, quantity, isScarce, isSoldOut
ReputationlistingRating, listingReviewCount, reviewPhotoCount, isBestseller, isTopRated
SEOtags (all 13), materials, category, categoryPath, description, whenMade
ProductisHandmade, isVintage, isDigital, isMadeToOrder, isPersonalizable, isCustomizable, minPrice, maxPrice, variations (with per-option prices), images, shopWideSale, createdAt, renewedAt
FulfillmenthasFreeShipping, shippingCost, minProcessingDays, maxProcessingDays, shipsFromCountryCode, acceptsReturns
ShopshopName, shopUrl, shopSales (total sales, also for shops that hide it), shopSalesHiddenOnSite, shopRating, shopReviewCount, shopFollowers, shopActiveListings, shopCountryCode, shopOpenedAt, isStarSeller

Track Etsy over time with scheduled runs

Most of the value comes from running the same search again and comparing. Apify can run the actor for you on a schedule and send the results wherever you need them.

1. Save your input as a task

Open the actor, set your keywords and options, then click Save as a new task. A task is a saved input you can run again with one click or on a schedule.

2. Schedule the task

In Apify Console, go to Schedules, click Create new, choose how often to run (for example daily at 06:00 in your time zone), and add your task. See Schedules and How to create a schedule.

Watch how to schedule an Actor:

Or schedule a saved task:

Common schedules:

Use caseFrequencyCron expression
Rank and ad trackingDaily0 6 * * *
Shop sales from shopSalesDaily0 0 * * *
Trend and niche researchWeekly (Monday)0 6 * * 1
Seasonal launches (Q4, holidays)Twice a day0 6,18 * * *

3. Send the results to a spreadsheet

Connect Google in the task's Integrations tab to save every run to Google Sheets or Google Drive automatically:

4. Compare runs

Every row has listingId, shopId and scrapedAt, so runs are easy to join:

  • Daily shop sales: for each shopId, today's shopSales minus yesterday's.
  • Demand trend: inCartCount and favorites per listingId over time.
  • Rank movement: searchRank per listingId and query. Set dedupeAcrossQueries to false so every keyword keeps its full list.
  • New competitors: listingIds that appear for the first time, and their createdAt.
  • Price changes: price and salePrice per listingId.

Input reference

FieldTypeDefaultEffect
queriesArray of stringsRequiredKeywords, one search per entry. Etsy search URLs (their q= keyword is used) and category URLs such as https://www.etsy.com/c/jewelry/necklaces also work.
maxResultsPerQueryInteger100Maximum listings saved per search. 0 means no limit.
includeDetailsBooleantrueAdds the detail fields above. One extra request per listing, charged as a separate event.
sortByString"relevance""relevance", "newest", "price_asc", "price_desc", or "top_reviews".
minPrice/maxPriceIntegerEmptyPrice range in US dollars.
shipToString"US"Search as a shopper in this country (2-letter code). Etsy only shows listings that ship there. Prices stay in USD.
shopLocationStringEmptyOnly shops in this country (2-letter code).
onSaleOnlyBooleanfalseOnly discounted listings.
freeShippingOnlyBooleanfalseOnly listings with free shipping.
digitalOnlyBooleanfalseOnly instant digital downloads.
vintageOnlyBooleanfalseOnly vintage items.
personalizableOnlyBooleanfalseOnly personalizable listings.
includeAdsBooleantrueKeep sponsored results. Turn off for organic results only.
dedupeAcrossQueriesBooleantrueSave each listing once per run. Turn off to get each search's full result list, for example for rank tracking.

Ready-to-run examples

Find what's selling now in a niche

{
"queries": ["halloween sweatshirt", "ghost mug", "fall wreath"],
"maxResultsPerQuery": 300,
"includeAds": false
}

Sort the dataset by inCartCount or boughtLast24h. Listings with high cart counts and a recent createdAt are newer products that are already selling.

Track your keyword ranks and competitors' ads every day

{
"queries": ["personalized leather wallet", "custom family ornament"],
"maxResultsPerQuery": 200,
"includeDetails": false,
"dedupeAcrossQueries": false
}

Save it as a task and schedule it daily. Search data without details is the cheapest way to follow searchRank, isAd and prices.

Research tags for digital products

{
"queries": ["digital planner", "budget spreadsheet"],
"maxResultsPerQuery": 100,
"digitalOnly": true
}

Open the Tags & SEO view and count which tags the top-ranked listings share.

Compare a market abroad

{
"queries": ["linen apron"],
"shipTo": "GB",
"shopLocation": "GB",
"maxResultsPerQuery": 200
}

Run it again with another country to compare competition and prices.

Collect a whole niche

{
"queries": ["ceramic mug"],
"maxResultsPerQuery": 5000,
"includeDetails": false,
"includeAds": false
}

The actor splits the search into price ranges once it reaches Etsy's limit of about 1,000 results.

Analyze the results with ChatGPT or Claude

Export the dataset as CSV (the Demand & shops or Tags & SEO view keeps it small) and attach it to a chat with ChatGPT, Claude or another AI assistant. Some prompts to start with:

Find the winners. "This is Etsy search data for one keyword. Rank the 10 listings with the strongest demand using inCartCount, boughtLast24h and favorites, weighting newer listings (createdAt) higher. For each, explain what its title, price and tags have in common with the others."

Build a tag set. "Count how often each tag appears among the 30 listings with the best searchRank. Suggest 13 tags for my listing about [your product], each at most 20 characters, mixing the most common tags with specific long-tail phrases the top listings use."

Price a product. "Group these listings by price into bands. For each band, show the number of listings, the average inCartCount, and how many are on sale. Recommend a price for a new listing and explain why."

The actor's dataset is also available through the Apify API and integrations such as Make, Zapier and n8n, so you can feed it into an automated workflow.

Output

Results go to the run's default dataset. Use the views Overview, Demand & shops, Ranking & ads, or Tags & SEO, or export everything as JSON, CSV, Excel, XML or HTML.

This is a real row from a necklace search on October 1, 2026, with the description, image list and variations shortened:

{
"listingId": 1234664395,
"title": "Personalized Arabic Name Necklace, Custom 18K Gold Name Necklace, Arabic Calligraphy Name Necklace, Islamic Gift, Eid Gift, Christmas Gift",
"url": "https://www.etsy.com/listing/1234664395/personalized-arabic-name-necklace-custom",
"price": 44.24,
"salePrice": 22.12,
"discount": "(50% off)",
"currency": "USD",
"isAd": false,
"query": "necklace",
"searchCategory": null,
"page": 1,
"pagePosition": 3,
"searchRank": 1,
"inCartCount": 298,
"boughtLast24h": 7,
"demandMessage": "In demand. 7 people bought this in the last 24 hours",
"lastSaleAt": "2026-09-30T22:37:15.000Z",
"favorites": 10670,
"listingRating": 4.84,
"listingReviewCount": 4077,
"isBestseller": true,
"tags": [
"Necklace",
"Arabic Name Necklace",
"Gold Name Necklace",
"Gift for her",
"Islamic gift",
"Personalized Jewelry",
"Personalized Gift",
"Birthday Gift",
"Custom name necklace",
"Gift for mom",
"Arabic Necklace",
"Oath gift",
"Christmas Gift"
],
"materials": ["Brass", "Silver", "Rose gold", "Yellow gold"],
"category": "Monogram & Name Necklaces",
"description": "Christmas Gift\n\nPersonalized Arabic Name Necklace, Custom 18K Gold Name Necklace…",
"variations": [
{
"name": "Finish",
"options": [
{ "value": "18K Gold", "price": null, "isAvailable": true },
{ "value": "925 Silver", "price": null, "isAvailable": true },
{ "value": "Rose Gold", "price": null, "isAvailable": true }
]
}
],
"hasFreeShipping": true,
"minProcessingDays": 4,
"maxProcessingDays": 5,
"shipsFromCountryCode": "GB",
"createdAt": "2022-05-17T10:45:01.000Z",
"shopName": "AnyaShopStudio",
"shopSales": 359426,
"shopSalesHiddenOnSite": true,
"shopRating": 4.86,
"shopReviewCount": 59395,
"shopFollowers": 28042,
"shopCountryCode": "GB",
"isStarSeller": true,
"scrapedAt": "2026-10-01T13:42:35.458Z"
}

Notes on fields

  • searchRank is the position among organic results, as a shopper sees them. It is null for ads and for listings found by price splitting, which are ranked within a price range, not the whole search.
  • page and pagePosition give where the listing appeared, including ad slots.
  • Each listing is saved once per search. If Etsy shows it first as an ad and later as an organic result, the row describes the first appearance.
  • On a search row, shopRating and shopReviewCount are the shop's. The listing's own rating is listingRating, from details.
  • price and salePrice are in US dollars. With variations, price is the starting price; details add minPrice, maxPrice and per-option prices.
  • boughtLast24h is set only when Etsy shows its "In demand" message; null means no message, not zero sales.
  • shopSales is the shop's total, not the listing's. Etsy doesn't publish per-listing sales.
  • Missing values are null. Titles and descriptions have HTML entities decoded. Every row has scrapedAt in UTC.

FAQ

Why did I get few or no results?

Use short keywords a shopper would type, such as leather journal, not a full listing title. Narrow filters (price range, shop location, on sale) also reduce results. The log says when Etsy returned nothing.

Can I scrape a whole Etsy category?

Yes. Paste a category URL such as https://www.etsy.com/c/home-and-living/candles into queries. The actor searches the whole category and splits it into price ranges like any search. Add ?q= to the URL, or use a search URL such as https://www.etsy.com/search/jewelry?q=ring, to search for a keyword within a category. Rows from category searches carry the category in searchCategory.

How many results can I get?

Etsy stops each search at about 1,000 results. Above that, the actor splits the search into price ranges and keeps going until it reaches your limit or every range is below Etsy's limit. Broad keywords have hundreds of thousands of listings, so with maxResultsPerQuery: 0 a run can take long and cost more. Set a limit or a maximum cost per run.

How fast is it?

Etsy takes about a second to answer each request. In our tests, 3,000 search results without details took about 4 minutes, and 80 listings with details took under 40 seconds. Details add one request per listing, run in parallel.

Why did my run stop before reaching my limit?

If the log says the charge limit was reached, the run hit its maximum cost or your account's spending limit. Everything collected before that is saved in the dataset. Raise the limit in the run options to collect more.

Are the sales numbers estimates?

No. shopSales, inCartCount, boughtLast24h, favorites and ratings are Etsy's own numbers at the time of the run. Etsy doesn't publish sales per listing, so the actor doesn't invent them. For sales over a period, compare shopSales between scheduled runs.

Can I use it instead of eRank or EverBee?

For keyword, tag, rank and demand research, yes: you get the listings, tags, ranks, cart counts and shop sales those tools are used for, as raw data you can sort and analyze yourself, and you pay per listing instead of per month. It doesn't estimate per-listing sales or keyword search volume, because Etsy doesn't publish them.

Why do ranks differ from what I see on etsy.com?

Etsy personalizes results for signed-in shoppers, rotates ads on every page load, and changes results by country. The actor searches as a signed-out shopper in the shipTo country. Expect small differences, and compare ranks between runs of the same task.

Do I need proxies, an Etsy account or an API key?

No. The actor handles connections and retries itself. It doesn't log in and doesn't use your Etsy account.

How is this different from Etsy's official API?

Etsy's Open API needs an approved developer app and doesn't offer search ranking, ads, cart counts or "bought in 24 hours". This actor returns what a shopper sees in search, plus those signals.

The actor collects publicly visible listing and shop data and no buyer data. You are responsible for how you use it, including Etsy's terms and laws such as GDPR.

Can it scrape a specific shop or its reviews?

Use Etsy Shop Scraper for a shop's full catalog, profile, contact details and reviews.

Cost

This actor uses pay-per-event pricing. You pay only for listings saved, with no subscription and no start fee:

EventPricePer 1,000Charged when
listing$0.002$2A listing is saved.
listing-detail$0.006$6Details are added to a listing and the detail request succeeds.

Example runs:

RunCost
100 listings with details$0.80
1,000 listings with details$8
1,000 listings without details (rank tracking)$2
2 keywords × 200 listings, daily for 30 days, no details$24

Turn off includeDetails for the cheapest runs, for example for daily rank tracking. Set a maximum cost per run; the actor stops cleanly when it's reached. The Pricing tab always shows the current prices.

Support

Report problems or request features in the Issues tab. Include the run ID, the input and what you expected. We read every issue.

This actor is not affiliated with or endorsed by Etsy, Inc. "Etsy" is a trademark of Etsy, Inc. eRank, EverBee and Marmalead are trademarks of their respective owners; this actor is not affiliated with them.