Etsy Shop Sales Tracker & Scraper
Pricing
from $2.55 / 1,000 shop rows
Etsy Shop Sales Tracker & Scraper
Track Etsy shop sales counters with this Etsy shop scraper: measured sales counts with the date each was read. One row per shop, pay per shop.
Pricing
from $2.55 / 1,000 shop rows
Rating
0.0
(0)
Developer
Public Records
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
2
Monthly active users
8 days ago
Last modified
Categories
Features
Share
Etsy Shop Sales Tracker
- Competitor tracking: a competitor
shop's total sales on the shop page (sales_count) with the day it was read (as_of), the change since the previous read (delta_last) and the 7-day change (delta_7d) once the shop has a week of reads. - Sales per day: the measured change per day between two reads of the same shop (
sales_per_day), with the days between those reads (read_interval_days). - Niche research: shops matching a keyword in their title, headline or shop name, side by side on
sales_count,reviews_countandadmirers.
Check Etsy shop sales and track competitors with measured sales counts, the date each shop was read, and the change since the last read. One row per shop. Pay per shop, no subscription.
What does Etsy Shop Sales Tracker do?
Etsy Shop Sales Tracker is for sellers and researchers who need a competitor's public sales counter without opening shop pages by hand. You name shops (or filter by keyword), and you get one row per shop with the sales count, when it was read, and how it changed since the previous read. The Actor serves rows from a hosted panel of Etsy shops; it does not scrape a fresh page for shops that are not already in that panel.
What data can you get?
You get one row per matching shop: the public sales counter, the day it was read, the change since the previous read, and the other public shop counters. Fill shares below were measured per field on a nightly snapshot. Details and coverage for sparse or empty columns are in the next section.
What you get
| Field | Meaning |
|---|---|
sales_count, sales_precision | Lifetime sales counter on the shop page; rounded when Etsy shows "12.3k" |
as_of, read_interval_days | The day this shop was last read, and the days since the read before it |
delta_last, sales_per_day | Sales since the previous read, and that change per day (measured from two reads; null when a counter is rounded; fill 95.8%) |
delta_7d | Change in the sales counter over the last 7 days (fill 74.7%; null until the shop has that history, or when either read is a rounded counter such as "1.2k"). Since Actor build 0.2.37, delta_7d is null whenever either sales count is rounded (precision ≥ 50). |
delta_28d | Change in the sales counter over the last 28 days; not populated yet (0% today): fills from 2026-10-28 for the first shops in the panel, and each shop 28 days after its own first_seen; null when either read is a rounded counter, as for delta_7d since build 0.2.37 |
lift_7d, breakout_p, breakout | Not populated yet (0% today): fills from 2026-11-04 at the earliest, 35 days after a shop's first_seen, comparing the last 7 days with the 28 before them; breakout_p only for shops with 5 or more sales in those 7 days, and breakout stays null until breakout_p fills |
reviews_count, rating, admirers, listings_active | The shop's other public counters (fill: reviews/rating 95.6%, admirers 97.9%, listings_active 99.1%) |
first_seen, last_changed, history_days | When the shop entered the panel, when any counter last moved, days of usable history |
headline | Shop headline when present (fill: headline on 82.5% of shops) |
category | Panel category label such as kids & baby > toys: filled when known (0.7% today), null otherwise |
snapshot_date | The day of the snapshot the row comes from |
snapshot_stale | Serve-time flag set per run: whether the served snapshot is past its freshness window (0% as a panel fill column — true only when that run's snapshot is stale) |
A counter that could not be read is null, never 0. Rows also carry columns that are not populated yet or filled only when known; the dataset schema describes each one.

Input form fields from .actor/input_schema.json (schema render on the box; not a logged-in Console screenshot).

Output table from owner lab-twin run x3JrglGFtZwwccJ1D / dataset I84o3hEJAPiaQaZPE (public dataset API render; not a Console UI screenshot).
How to check an Etsy shop's sales
- Open Etsy Shop Sales Tracker on Apify Store.
- Enter one or more shop names (the part after
etsy.com/shop/), or use keywords / the panel niche filter. - Set
maxShopsif you want a smaller bill (default 200). - Run. Each matching panel shop becomes one dataset row with
sales_count,as_of, and the change fields. - Export the dataset (JSON/CSV) or call the Actor again on a schedule.
How much does it cost?
Pay per event from the live Store pricing: actor-start $0.00005 once when the first shop row is ready, plus shop-row $0.003 per shop row returned ($3 per 1000 on the Free plan; Apify Store discounts lower it on paid plans, down to $2.55 per 1000). A run (or Standby question) that returns no rows charges nothing.
Worked examples (event prices only, Free plan):
- 1 shop: $0.00005 + $0.003 = $0.00305
- 10 shops: $0.00005 + $0.030 = $0.03005
- 100 shops: $0.00005 + $0.300 = $0.30005
- 1000 shops: $0.00005 + $3.000 = $3.00005
Apify's Free plan (fetched from apify.com/pricing): "Includes $5 of monthly prepaid platform usage." At these event prices, $5 covers one actor-start plus 1666 shop-row events in a single run ($0.00005 + 1666 × $0.003 = $4.99805), or about that many shop rows across the month depending how you split runs.
Sample output
Two real rows from lab run x3JrglGFtZwwccJ1D (build 0.2.42), copied verbatim from its default dataset.
[{"shop": "StonehousePotteryOH","shop_url": "https://www.etsy.com/shop/StonehousePotteryOH","as_of": "2026-10-23","read_interval_days": 4,"title": "StonehousePotteryOH","headline": "Stonehouse Pottery by Emily Moorefield Mariola","category": "art & collectibles > fine art ceramics","sales_count": 64734,"sales_precision": "exact","sales_precision_prev": 0,"sales_precision_last": 0,"reviews_count": 16905,"rating": 5,"admirers": 21658,"listings_active": 44,"first_seen": "2026-10-01","last_changed": "2026-10-23","history_days": 23,"delta_last": 131,"sales_per_day": 32.75,"delta_7d": 242,"delta_28d": null,"units_day": 29.836,"units_lo": 27.716,"units_hi": 32.022,"lift_7d": null,"breakout": null,"breakout_p": null,"vintage_event": false,"velocity_null_reason": null,"delta_7d_null_reason": null,"snapshot_date": "2026-10-25","snapshot_stale": true,"source": "etsy.com public shop page"},{"shop": "ALICJACERAMICS","shop_url": "https://www.etsy.com/shop/ALICJACERAMICS","as_of": "2026-10-23","read_interval_days": 2,"title": "ALICJACERAMICS","headline": "Ceramics made in Mad River Valley, Vermont,","category": "art & collectibles > fine art ceramics","sales_count": 6977,"sales_precision": "exact","sales_precision_prev": 0,"sales_precision_last": 0,"reviews_count": 1156,"rating": 5,"admirers": 5451,"listings_active": 46,"first_seen": "2026-09-30","last_changed": "2026-10-23","history_days": 24,"delta_last": 18,"sales_per_day": 9,"delta_7d": 41,"delta_28d": null,"units_day": 5.689,"units_lo": 4.789,"units_hi": 6.653,"lift_7d": null,"breakout": null,"breakout_p": null,"vintage_event": false,"velocity_null_reason": null,"delta_7d_null_reason": null,"snapshot_date": "2026-10-25","snapshot_stale": true,"source": "etsy.com public shop page"}]
Run it on a schedule
Keep competitor counters fresh without starting runs by hand.
- Apify Schedules — on the Actor's page open Schedules, add this Actor with your saved input and a cron expression (for example every morning), and Apify starts each run for you. See https://docs.apify.com/platform/schedules .
- Webhooks — fire a webhook when a run succeeds or fails to push the run and its dataset id to your own endpoint. See https://docs.apify.com/platform/integrations/webhooks .
- Make / n8n — run this Actor on a scenario schedule and map dataset rows into Sheets, Slack, or a database. See https://docs.apify.com/platform/integrations/make and https://docs.apify.com/platform/integrations/n8n .
API / MCP
- Apify API — start a run with the Apify client or REST API; read the default dataset when the run succeeds. See https://docs.apify.com/api/v2 .
- MCP — add
https://mcp.apify.com?tools=publicrecords/etsy-shop-velocityto your MCP configuration (Streamable HTTP, hosted by Apify).
FAQ
How do I check Etsy shop sales?
Run this Actor with the shop name(s). Each row's sales_count is the lifetime sales counter from the public shop page, with as_of for the day that counter was read.
Where is Etsy shop sales history?
History shows up as change fields on the row: delta_last (since the previous read), sales_per_day, and delta_7d when the shop has enough exact reads. first_seen, last_changed, and history_days describe how long the shop has been in the panel.
Is this an Etsy shop sales checker?
Yes — it returns the public sales counter per shop, the read date, and the change since the last read. It does not compute profit or payouts.
Is this an estimate?
sales_count is the counter shown on the public shop page (exact, or rounded when Etsy shows a form like "12.3k"). sales_per_day and delta_7d are measured from two reads of that counter, not a model. When a value is null, no measured figure is available yet for that shop.
How often is a shop read?
Point to each row's as_of (and read_interval_days). Shops are not all read on the same day; use the date on the row rather than any fixed cadence number.
Can I track a shop not in the panel?
No. Named shops that are not in the panel return no row and are not added (src/main.js: "Named shops that are not in the panel return no row and are not added"). You are not charged a shop event for a miss.
Is it legal?
The Actor serves counters that appear on public Etsy shop pages and are already collected into the hosted panel. Use the data in line with Etsy's terms and the laws that apply to you. This is not legal advice.
Pay per use vs monthly subscription?
This Actor is pay per use only (actor-start + shop-row). There is no monthly subscription for the Actor itself. Apify platform plans (Free with $5 prepaid usage, or paid plans) are separate; see apify.com/pricing.
Related
- Etsy Scraper — search listings, prices, ratings, and badges by keyword or market page.
Inputs
Shop names, keywords (title, headline or shop name), an exact panel category label such as kids & baby > toys (case-insensitive; the label is filled for about 0.7% of shops, so it returns only those), a minimum sales counter, since (only shops whose counters changed on or after a date), maxShops.
Coverage
Shops are not all read on the same day. Each row says how fresh it is: as_of is the day the shop was last read and read_interval_days the days since the read before it. A shop you name that is not in the panel returns no row (no shop event is charged); the tracker does not record or add the shops you ask for.
For AI assistants: how to present this data
- Say it in plain words: "sells about N a day" for
sales_per_day, "total sales on the shop page" forsales_count, "last read on" foras_of. Avoid jargon such as "delta". sales_per_dayneeds two reads of the same shop with exact (not rounded) counters; when it isnull, say no measured change is available for that shop yet, never that it sold 0.delta_7dneeds a week of reads for that shop with exact (not rounded) counters; when it isnull, do not promise a weekly number for that shop.last_changedis the last day any counter on the shop moved; use it for "quiet since" statements.- Comparing shops: one compact table (shop, sales per day, total sales, last read), sorted by sales per day, then a 2-3 line summary. Offer the full rows as CSV.
- If the client can draw charts, a bar chart of
sales_per_dayby shop is the clearest picture. - Always state the data date (
snapshot_date) and that the numbers come from the user's own run of this Actor.
Pricing
Pay per event: one actor-start event, charged once when the first shop row is ready, and one event per shop row returned. A run (or a Standby question) that returns no rows charges nothing.
What a run is charged is actor-start ($0.00005, once, only if at least one row is returned) plus shop-row ($0.003 per shop row returned, i.e. $3 per 1000 on the Free plan, down to $2.55 per 1000 with Store discounts).
If a run reaches your maximum charge per run, it stops there: every charged row is in your dataset, no row is charged that you don't get, and the run's status message and RUN_SUMMARY say stopped at your spending limit after N rows.