A daily cron that runs a live organic SERP lookup to depth 100 for each tracked keyword, finds the site's own domain in the results and records the absolute position, the exact URL that ranked and a snapshot of the top ten. Results are stored one row per keyword per day, so history is a fact rather than a screenshot. A keyword already checked today is skipped, which makes the pass safe to re-run.
Also called: rank checker · keyword position tracking · where do I rank on google
- 1checkRanking() runs /serp/google/organic/live/regular at depth 100 for the keyword's own location setting.
- 2The site's domain is matched with the www prefix stripped from both sides.
- 3seo_rankings is upserted on (keyword_id, checked_on), so a re-run of the same day corrects rather than duplicates.
- 4found_url is stored, which is what later reveals cannibalisation and which page actually earns a term.
- 5Publishing a post automatically adds its target keyword to tracking, so measurement starts the next morning.
The route carries the scar: "Up to 200 LIVE SERP calls in one pass, each a round trip to DataForSEO. On the platform default this died partway through and only the first handful of keywords were ever checked — silently, because the ones already done get skipped next run and it looked like progress. (Keith 08-24)" The fix was raising maxDuration to 800 seconds. The 'skip what's done' rule that made the failure invisible is the same rule that makes the pass idempotent — it just needed the run to be able to finish.
- Rank history was anecdotal, so improvement could not be proved or disproved.
- Nobody knew which URL Google was actually returning for a term.
- A partially-completed check looked identical to a completed one.
See it on your own jobs
Twenty minutes, your numbers, no slide deck. We’ll build one of your real buildings in front of you and send you the estimate link at the end — yours to keep either way.
or keep browsing features →