# SMM panel price survey — 2 and 13 September 2026

The dataset behind <https://novamya.com/social-media-growth/panel-price-survey/>.

Fifteen public SMM panel service catalogues, read between 00:16:39Z and
00:16:51Z on 2026-09-02 — a twelve-second window, so every price in here is
quoted at the same instant. 44,064 listed services. No account was created,
no order was placed, no form was submitted: every page is one a visitor can
open without signing in.

The same fifteen pages were read again between 20:27:59Z and 20:28:11Z on
2026-09-13, from the same host, with the same script: 44,356 listed services.
The two captures are joined on each panel's own service id in `compare.py`.
The first capture keeps the file names it was published under; every file from
the second carries `-w2`, and its raw pages sit in `pages/w2/`.

Two of the fifteen panels — `smmlaunch.com` and `adderpanel.com` — are
operated by the company that publishes Novamya. They are in the sample and
labelled, because leaving them out would hide the one relationship this data
can actually verify.

## Files

| file | what it is |
|---|---|
| `services-all.json.gz` | every one of the 44,064 listed services, as parsed |
| `services-basket.csv` | the four basket services per panel, the table the article reports |
| `stats.json` | the aggregate figures quoted in the article |
| `fetchlog.tsv` | one row per panel: URL requested, URL after redirects, HTTP status, bytes, UTC timestamp |
| `method.md` | how panels were chosen, what was excluded, and why |
| `pages/*.html.gz` | each catalogue exactly as it was served to us |
| `services-all-w2.json.gz`, `services-basket-w2.csv`, `stats-w2.json`, `fetchlog-w2.tsv` | the same four files for the 13 September capture |
| `pages/w2/*.html.gz` | each catalogue as served on 13 September |
| `changes.json` | every aggregate the article quotes about what changed between the captures |
| `price-changes.csv` | one row per listing whose price changed: id, both names, both prices, change in % |
| `renamed-listings.csv` | every listing that kept its id and changed its name, so "same listing" can be judged id by id |
| `harvest.sh`, `parse_panels.py`, `analyse.py`, `compare.py` | the four scripts, in order. Run them against `pages/` and `pages/w2/` and they reproduce every number offline |

```
python3 parse_panels.py && python3 analyse.py           # 2 September
python3 parse_panels.py w2 && python3 analyse.py w2     # 13 September
python3 compare.py                                      # what changed
```

## What this is not

Listed prices and stated claims on one date. Nothing here is evidence about
what any panel delivers, because nothing was ordered. A `$0.01` listing and a
`$0.33` listing may not be the same product — that is the finding, not a
controlled comparison.

`peakerr.com` is in the corpus but excluded from the price-spread table: its
`/services` URL redirected to the homepage (see `fetchlog.tsv`), so its rows
are advertised headline prices with no service IDs or order limits, and are
not comparable with the other fourteen catalogues.

## Licence

[Creative Commons Attribution 4.0 International](https://creativecommons.org/licenses/by/4.0/)
(CC BY 4.0). Reuse it commercially, republish it, build on it; the one
condition is attribution.

Cite as:

> Novamya (2026). *What 15 public SMM panel catalogues listed on 2 and 13
> September 2026.* Dataset. https://novamya.com/data/panel-price-survey/
