FOUND Meetup NYC - April 28th, 7pm, during SEO Week. Lightning talks, open bar, and 80 seats. Read more → Register free
Pricing
Get a demo

Tracker API

Free JSON endpoint for Google algorithm update data. 173 updates from 2000 to present with dates, types, durations, and descriptions.

Endpoint

GET https://www.demandsphere.com/research/demandsphere-radar/algorithm-update-tracker/api.json

Returns the full dataset as a single JSON object. No authentication required. No rate limiting. Response is static and cached by Cloudflare.

License

CC BY-NC 4.0 View license
  • Attribution required - credit DemandSphere and link to the tracker
  • Non-commercial use only
  • Commercial use requires written permission
  • Contact: demandsphere.com/contact

Response Format

Top-level fields

license: "CC BY-NC 4.0"
license_url: string
attribution: string
attribution_url: string
terms: string
updated: "YYYY-MM-DD"
update_count: number
data_sources: [string]
updates: [object]

Update object fields

name: string
start: "YYYY-MM-DD"
end: "YYYY-MM-DD" | null
dur: "X days" | null
cat: "Core" | "Spam" | "System" | "Other"
ai: boolean (AI innovation flag)
incidentId: string (Google Status ID)
desc: string (summary)

Data Sources

Google Search Status Dashboard
Live ranking incidents from 2021 onward. Includes incident IDs for cross-referencing with Google's official records.
DemandSphere Historical Database
20+ years of algorithm updates tracked in DemandSphere's annotation database. Covers the pre-Status Dashboard era from 2000 to 2020.
Google Research Publications
AI innovation milestones sourced from Google Research papers and announcements. Entries flagged with ai: true.

Example Usage

curl
curl https://www.demandsphere.com/research/demandsphere-radar/algorithm-update-tracker/api.json
curl + jq
curl -s https://www.demandsphere.com/research/demandsphere-radar/algorithm-update-tracker/api.json \
  | jq '[.updates[] | select(.ai==true)] | .[] | {name, start}'
JavaScript
fetch('https://www.demandsphere.com/research/demandsphere-radar/algorithm-update-tracker/api.json')
  .then(r => r.json())
  .then(data => {
    const core = data.updates.filter(u => u.cat === 'Core');
    console.log(core.length + ' core updates');
  });
Python
import requests
data = requests.get('https://www.demandsphere.com/research/demandsphere-radar/algorithm-update-tracker/api.json').json()
ai = [u for u in data['updates'] if u.get('ai')]
for m in ai:
    print(f"{m['start']} - {m['name']}")

Required Attribution

When using this data, include one of the following:

<!-- HTML -->
Data from <a href="https://www.demandsphere.com/research/demandsphere-radar/algorithm-update-tracker/">DemandSphere Radar</a>
# Markdown / plain text
Data: DemandSphere Radar (demandsphere.com/research/demandsphere-radar/algorithm-update-tracker)

DemandSphere Radar

Build on top of this data

Use the API to correlate algorithm updates with your own ranking data, build dashboards, or integrate update alerts into your workflow.

View Tracker Get a demo