Track any Etsy shop's sales velocity in 5 minutes (no proxy)

2026-10-02

Disclosure: I publish and maintain the Actor this tutorial uses (publicrecords/etsy-shop-velocity on Apify).

You have a shortlist of Etsy shops — competitors, peers, or targets — and you need a number for how fast each one is selling, not a one-off screenshot of the shop page. Opening tabs by hand does not leave a history you can compare week over week.

The method

  1. Read the public sales counter on the shop page. Etsy shows lifetime sales (exact or rounded) on etsy.com/shop/<ShopName>. Note the count and the precision.
  2. Repeat on a fixed cadence. A second read of the same counter is what turns a lifetime total into a rate. Keep the timestamps.
  3. Compute deltas and rates from successive reads. Measured change ÷ days between reads = sales/day. Short windows (7d) and medium windows (28d) need that many days of history before they are defined.
  4. Do not invent velocity. Until history exists, report the counters and leave rate fields empty. Breakout flags need at least 7 days of history.
  5. Prefer a hosted panel when you do not want to run a browser or proxy. A pre-built snapshot of many shops removes the need for your own proxy for shop-page reads.

Doing it at scale (measured run)

Etsy Shop Sales Tracker & Scraper (publicrecords/etsy-shop-velocity) serves one row per shop from a hosted panel of public shop counters. No proxy configuration is required for this path.

Proof run (2026-10-02)

FieldValue
Actorpublicrecords/etsy-shop-velocity
Buildlatest (listing build 0.2.5)
Run IDlWWrFPgwZcu6DYYKe
StatusSUCCEEDED
Runtime5.314 s
Datasetw4HG8g4gRIbzDRLIx (2 items)
RUN_SUMMARYpanel=313, matched=2, served=2, charged_rows=2, snapshot_date=2026-09-30, stale=true
Console pricing (PPE)actor-start $0.005 + shop-row $0.003 each → $0.011 for this 2-shop run

Input used (Store prefill shops):

{ "shops": ["OrelCeramics", "Bestickend"], "maxShops": 2 }

Output rows (abbreviated; full fields in the dataset):

[
  {
    "shop": "OrelCeramics",
    "shop_url": "https://www.etsy.com/shop/OrelCeramics",
    "as_of": "2026-09-30",
    "sales_count": 111,
    "sales_precision": "exact",
    "reviews_count": 34,
    "rating": 5,
    "admirers": 252,
    "listings_active": 44,
    "history_days": 1,
    "delta_last": null,
    "sales_per_day": null,
    "delta_7d": null,
    "delta_28d": null,
    "units_day": null,
    "breakout": false,
    "snapshot_date": "2026-09-30",
    "snapshot_stale": true,
    "source": "etsy.com public shop page"
  },
  {
    "shop": "Bestickend",
    "shop_url": "https://www.etsy.com/shop/Bestickend",
    "as_of": "2026-09-30",
    "sales_count": 11400,
    "sales_precision": "rounded",
    "reviews_count": 1830,
    "rating": 5,
    "admirers": 771,
    "listings_active": 44,
    "history_days": 1,
    "delta_last": null,
    "sales_per_day": null,
    "delta_7d": null,
    "delta_28d": null,
    "units_day": null,
    "breakout": false,
    "snapshot_date": "2026-09-30",
    "snapshot_stale": true,
    "source": "etsy.com public shop page"
  }
]

What those nulls mean (measured, not marketing)

On this run every shop had history_days: 1. The Actor therefore left delta_last, sales_per_day, delta_7d, delta_28d, and units_day as null. That is correct: velocity and breakout flags are not filled until successive panel reads accumulate. The README states breakouts need 7 days of history. The panel snapshot date was 2026-09-30 and the run marked snapshot_stale: true on 2026-10-02.

A second proof run the same night (5dCSPEknPT5wtoCLH, input minSales: 1000, maxShops: 5) returned in 4.59 s, charged 5 shop-rows ($0.020 at Console rates), and showed the same pattern: e.g. PersonalizationMall sales_count=829600 (rounded), history_days=1, velocity fields null, snapshot_stale=true.

Cost math you can recompute

Prices are Console PPE as of the listing read on 2026-10-02 (actor-start $0.005, shop-row $0.003). Quote Console if they change.

Store + MCP

Actor (Store): https://apify.com/publicrecords/etsy-shop-velocity

MCP for Claude Desktop / Cursor: https://mcp.apify.com/?tools=publicrecords/etsy-shop-velocity

Disclosure: published by the maintainer of this Actor (publicrecords on Apify).

Try Etsy Shop Sales Tracker on Apify →