Local Falcon charges $139 a month to sample Google Maps rankings from a grid around a business. Semrush and BrightLocal sell a version. There was no open-source one.
"We rank top three within two miles of the shop." If the grid is built by stepping latitude and longitude in fixed decimal amounts, that claim is wrong everywhere except the equator — a degree of longitude is 111km at the equator and 54km at 61°N.
Every grid point is a paid SERP call, so the interesting question is which subset to measure. The plan was to chase gradient: sample where the rank surface changes fastest, because that is where a competitor's radius of dominance ends. Measured, that was 7% worse than plain coverage — and saying so is more useful than shipping it on and hoping nobody checks.
Vincenty's direct solution on WGS84. Round-trips to a centimetre at any latitude.
Square, circular (a square grid's corner over-reaches by 1.41×), and hex.
"Every Nth" is uniform in index space and lays down bands. Farthest-point is uniform on the ground.
ARP, ATRP, SoLV, coverage — with every delta oriented so positive always means improvement.
place_id, then cid, then normalised name with location as a tiebreak, so two branches do not merge.
Interpolated points are dashed and dimmed. A client can see which circles are measurements.
From examples/benchmark.ts, against a synthetic market where the true rank at every point is free to evaluate:
It does not scrape Google. The SERP comes from whichever provider you already pay for, because a scraper breaks when markup changes and then silently returns wrong data — worse than none, since a rank report nobody can trust still gets shown to a client. No scheduling, no storage, no UI beyond the SVG.
The README goes deeper, and the tests are the honest documentation. Happy to walk through the trade-offs.