The crawler
We don’t guess the price. We go there.
Same SaaS, sixteen countries, one residential exit each. If the page doesn’t show a monthly price, it never hits the catalogue.
- 01URLSomeone pastes a pricing page
- 02QueueJob sits until a worker is free
- 0316 exitsChromium + Decodo, one country at a time
- 04NormalizeLocal money → USD, delta vs US
- 05LiveMap, catalogue, share card, sitemap
01 · ingest
A URL in, a job out.
Home search or Ask for a SaaS. We keep the host, drop anything private (localhost, raw IPs), and rate-limit so this box cannot be used as an open proxy. No human publish step — the queue is the only gate.
02 · fetch
A real browser, standing in that country.
Not curl. Chromium, images off, analytics blocked. Traffic leaves through Decodo with country-in, country-tr, country-us… If the HTML already has a monthly price we skip the heavy render. If every country comes back empty, the SaaS is not published and we get a mail.
03 · normalize
One reference. Everyone else is a delta.
US (or the first country that paid out) becomes $X. India at ₹415 is stored as local label + USD + −37.6%. The map colors that gap. We never invent a PPP row to fill a hole — missing country means we didn’t see a price there.
| CC | Local | USD | Δ |
|---|---|---|---|
| US | $20.00 | $20.00 | ref |
| IN | ₹415 | $4.99 | −37.6% |
| TR | ₺189 | $5.80 | −27.5% |
| BR | R$39 | $7.10 | −11.3% |
04 · publish
The site is the database.
Catalogue, hub, vs-US, the buy tutorial, sitemap, Open Graph card — all the same row. No CMS. If the snapshot exists, the pages exist. Share a link; the card is generated from the gap.
05 · recrawl
Gaps rot. We come back.
Same slug, new job, overwrite the country lines, bump verified_at. Old seed prices are thrown away on a successful scrape so the map never mixes guesswork with a live page.
Paying at the cheap rate is a different story — that’s the per-product tutorial, not this crawler.
FAQ
Questions people actually ask.
Are the prices real or estimated?
Real. A headless browser exits through a residential proxy in each country, opens the public pricing page and reads the displayed monthly price. If no price is shown, the product is not published.
How many countries are checked?
Sixteen countries per scan, one residential exit each, including the US which serves as the reference price for every product.
Is buying a SaaS through another country legal?
Prices differ because publishers set regional pricing; paying the cheaper rate usually means signing up from that country, often with a VPN. It can conflict with a publisher's terms of service — each tutorial says where to stop.
How often are prices re-checked?
Gaps rot: prices are re-crawled on demand and each product page shows when its snapshot was verified. Old prices are overwritten on every successful crawl.