Etsy Scraper - Bestsellers, Cart Counts & Shop Sales avatar

Etsy Scraper - Bestsellers, Cart Counts & Shop Sales

Pricing

from $5.10 / 1,000 listing delivereds

Go to Apify Store
Etsy Scraper - Bestsellers, Cart Counts & Shop Sales

Etsy Scraper - Bestsellers, Cart Counts & Shop Sales

Scrape Etsy bestsellers and search results: price, discount, Bestseller and Popular now badges, how many people have each item in their cart, shop total sales and sales per day since your last run. Digital downloads filter for product research.

Pricing

from $5.10 / 1,000 listing delivereds

Rating

0.0

(0)

Developer

Scrapewise Data

Scrapewise Data

Maintained by Community

Actor stats

0

Bookmarked

9

Total users

6

Monthly active users

5 days ago

Last modified

Security

Limited permissions

Share

Etsy Scraper: Etsy bestsellers, cart counts and shop sales

This Etsy scraper finds Etsy bestsellers and what is selling now. Search Etsy by keyword or open shops, and get price, discount, Bestseller and Popular now badges, how many people have each item in their cart, and shop total sales.

Run it daily to see sales per day since your last run. Use the digital downloads filter to research printables and templates. Example: printable planner, 3 pages of results.

At a glance

  • Price per 1,000 listings, Free plan: US$ 6.00
  • Fee per run: US$ 0.02, charged only after the run gets past Etsy's bot protection
  • Three modes: search results by keyword, shops (summary + every item), full listing pages
  • Demand signals: Bestseller, Popular now, Star Seller, in-cart count, "bought in the past 24 hours", shop sales, seller tenure
  • Sales velocity: salesSinceLastRun and salesPerDay per shop, inCartsChange and becameBestseller per item
  • Filters: digital downloads only, min and max price, sort order, skip ads
  • Proxy: US residential included in the price
  • Error rows (blocked page, invalid input, listing not found): free, with an errorCode

One real row

From a test on 2026-10-09, search budget spreadsheet google sheets, page 1:

{
"type": "listing",
"source": "search",
"searchQuery": "budget spreadsheet google sheets",
"page": 1,
"position": 2,
"listingId": "4316136064",
"title": "Simple Budget Spreadsheet: Google Sheets Budgeting Planner (Digital Download)",
"url": "https://www.etsy.com/listing/4316136064/simple-budget-spreadsheet-google-sheets",
"price": 5.4,
"originalPrice": 9.0,
"currency": "USD",
"discountPercent": 40,
"isAd": true,
"isBestseller": true,
"isPopularNow": false,
"isStarSeller": true,
"isDigitalDownload": true,
"inCartsCount": null,
"shopName": "AbbyOrganizes",
"shopId": "58970278",
"shopSalesApprox": 9900,
"shopTenure": "1 year on Etsy",
"shopYearsOnEtsy": 1,
"shipsFrom": "Pittsburgh, Pennsylvania",
"scrapedAt": "2026-10-09T23:41:12Z"
}

And a shop summary row (Shop mode), with the comparison fields that appear from the second scheduled run on:

{
"type": "shop",
"shopName": "DesignStudioTeti",
"url": "https://www.etsy.com/shop/DesignStudioTeti",
"slogan": "Printable Planners, Calendars, Resume Templates & more",
"location": "Houten, The Netherlands",
"rating": 4.9,
"reviewCount": 7572,
"totalSales": 84425,
"admirers": 8063,
"yearsOnEtsy": 13,
"previousTotalSales": 84301,
"salesSinceLastRun": 124,
"hoursSinceLastRun": 24.0,
"salesPerDay": 124.0
}

The comparison values above show the format; they depend on your own previous run.

What you can do with it

  • Validate a product idea: search the keyword, count Bestseller and Popular now badges on page 1, look at prices and discounts, and see how many sales the shops behind those listings have.
  • Spy on competitor shops: schedule Shop mode daily and get each shop's sales per day, new items and which items people are adding to their carts.
  • Find rising listings: inCartsChange and becameBestseller tell you what started selling since the last run.
  • Price research: original price, sale price and discount for every card, filtered by price range.
  • Lead lists of Etsy sellers: shop name, tenure, total sales and where they ship from.

Input

FieldTypeWhat it does
modesearch, shop or listingWhat to scrape. Default search.
searchQuerieslist of textKeywords, one per line, as typed on Etsy (Search mode).
shopUrlslist of textShop URLs or shop names (Shop mode).
listingUrlslist of textListing URLs or ids (Listing mode).
maxItemsnumberListings per keyword or per shop. Default 48. In Shop mode, 0 returns only the summary row.
maxPagesnumberSafety cap on pages per keyword or shop. Default 5.
sortByrelevance, newest, price_low, price_high, top_reviewsSearch order.
digitalOnlytrue/falseOnly instant digital downloads.
minPrice, maxPricenumberPrice range in USD.
includeAdstrue/falseKeep sponsored cards (marked isAd). Default true.
compareWithPreviousRuntrue/falseAdd the change since your last run. Default true.
proxyConfigurationproxyUS residential by default.

Example, three keywords, digital only:

{
"mode": "search",
"searchQueries": ["digital planner", "wedding invitation template", "svg cut file"],
"digitalOnly": true,
"maxItems": 60
}

Example, daily shop tracking:

{
"mode": "shop",
"shopUrls": ["https://www.etsy.com/shop/DesignStudioTeti", "AbbyOrganizes"],
"maxItems": 100,
"compareWithPreviousRun": true
}

How sales tracking works

Etsy shows each shop's total number of sales. With compareWithPreviousRun on, the Actor saves that number (and each listing's in-cart count, price and Bestseller badge) in a key-value store named etsy-scraper-state in your own Apify account. On the next run it subtracts:

  • salesSinceLastRun = total sales now minus total sales at your previous run
  • salesPerDay = the same, scaled to 24 hours (shown when the runs are at least one hour apart)
  • inCartsChange, previousPrice and becameBestseller for each listing seen before

Schedule the Actor once a day (Apify Schedules) for clean daily numbers. The state belongs to your account only; delete the key-value store to start over.

Output

Every row has a type:

  • listing: a card from a search page or a shop page.
  • shop: a shop summary (Shop mode), one per shop.
  • listingDetail: a full listing page (Listing mode) with rating, reviewCount, category, categoryPath, quantityAvailable, availability, description, shopRating, shopReviewCount, shopSalesApprox, shopFavorites, isBestseller, and boughtLast24h / inCartsCount when Etsy shows them (in a test on 2026-10-10 a budget template page showed 59 purchases in the past 24 hours).
  • error: something that could not be read. Free.

Notes on the fields:

  • inCartsCount comes from Etsy's "N people have this in their cart" note. Etsy shows it on shop pages and some listing pages, not on search cards; "Over 20" is returned as 20 with the original text in inCartsText. It shows up mostly on physical items: in a test on 2026-10-10, 1 of 190 digital-download cards in six shops carried it.
  • Etsy shows Bestseller and Popular now badges on search cards and listing pages, not on shop pages. To see which of a shop's items carry a badge, search its keywords or use Listing mode.
  • yearsOnEtsy is 0 for shops younger than one year.
  • shopSalesApprox is the rounded figure shown on search cards ("9.9k sales"). The exact count is totalSales on the shop row.
  • Search results include ads by default because they are part of what buyers see. Use isAd to filter them.

Download as JSON, CSV, Excel or through the API from the run's Output tab.

Error codes (never charged)

CodeMeaning
INVALID_INPUTA shop name, listing URL or option could not be understood. The message says which.
BLOCKEDEtsy refused the page after several attempts. Run again later.
NOT_FOUNDThe shop or listing does not exist anymore (Etsy answered 404).
NO_DATAThe listing page opened but had no product data.
NOT_REACHEDThe run timeout came before this input. The first page of a run takes 30 to 90 s, so give runs at least 300 s.

If Etsy refuses every attempt in a run, the run ends without delivering or charging anything.

Pricing

Pay per event, no monthly fee:

EventPrice
Listing delivered (search or shop card)US$ 0.006 (US$ 6.00 per 1,000)
Shop summary deliveredUS$ 0.006
Full listing page deliveredUS$ 0.015
Run started (only after the bot protection is passed)US$ 0.02

Examples: one keyword, 60 listings: about US$ 0.38. Ten competitor shops tracked daily with their 40 newest items each: about US$ 2.48 per day. Apify platform usage and the residential proxy are included.

Limitations

  • Etsy uses strong bot protection, so the first page of each run takes 30 to 90 seconds. After that, pages load in about a second each. Keep the run timeout at 300 s or more; with less, inputs come back as free NOT_REACHED rows.
  • Search pages show up to about 60 listings and Etsy limits how deep search goes; use more specific keywords for more coverage instead of many pages.
  • Etsy does not publish per-listing sales. Shop sales, badges and in-cart counts are the public demand signals; this Actor returns them exactly as Etsy shows them.
  • Prices are in USD as seen from the US.
  • Only public pages are read. No login, no buyer data, no private messages.

FAQ

Do I need an Etsy API key? No.

Why is the first page slower? The run first gets past Etsy's protection, which takes 30 to 90 seconds; the pages after it load fast.

Can I get sales for a single listing? Etsy does not publish a sales total per listing. Listing mode returns boughtLast24h when Etsy shows "N people bought this in the past 24 hours"; combine it with the shop's daily sales, the in-cart count and the Bestseller badge.

Does it work for non-English Etsy? Pages are read in English from the US. Listings from every country appear.

Can I schedule it? Yes. Daily schedules are what make salesPerDay useful.

Changelog

  • 18 Oct 2026: a run with a timeout too short to reach the first page now says so (NOT_REACHED) instead of reporting a block. An empty input runs the example search.
  • 0.1 (2026-10): search, shop and listing modes; demand badges; in-cart counts; shop sales; daily comparison.