Every engine and place
Track keywords on every search engine, in any place
- Six search engines. Tracked keywords can be checked on Google, Bing, Yahoo, Baidu, Naver and Seznam. Before, Bing and Yahoo could be chosen, but every check ran on Google. Each engine’s keywords are now checked on that engine, with their own history. See Tracked keywords.
- Any location. Track a keyword in any country, region, city, district or postal code the engine searches from. That’s all 240 countries and territories DataForSEO lists (Taiwan, Hong Kong and Puerto Rico included) and about 270,000 places for Google, up from 187 countries and a handful of cities. Type to search, for example
austin, texasor10001. - Every language. About 130 languages, up from 65. The list is the engine’s own.
- Default search engine. A project’s rank tracking engine is the one new keywords start on. See Add a project.
- Only what DataForSEO takes. Keyword research defaults (Project Settings) are the country-and-language pairs research covers — South Africa in English, Brazil in
pt. Search volume is asked only in Google Ads’ 46 languages; a keyword in another is tracked with no volume. AI visibility asks Google AI Mode only in its own languages, and Claude only from its 36 countries. - Checked before it’s saved. A location or language the engine doesn’t search from is refused with a message, instead of a check that fails every day.
- API and MCP. New:
GET /v1/reference/locations,GET /v1/reference/locations/lookupandGET /v1/reference/languages, and the MCP toolsfind_locationandlist_search_languages.search_engineis validated onPOST …/tracking/keywordsand project creation. Projects returnsearch_engine, their default engine.
First checks
New keywords and topics get checked straight away
- Tracked keywords get a first rank check of their own when you add them, instead of waiting for the next scheduled check. Positions land within about 20 minutes; search volume fills in with the next scheduled check. See Add tracked keywords.
- AI visibility topics get a first snapshot from all six engines when you add them, instead of waiting up to a week. It’s covered by your plan’s AI prompts. See Add prompts.
- Local SEO keywords — the first check now searches only the keywords you added, not every keyword at the location again.
- Fixed: adding an AI visibility topic that was tracked in another location or language was skipped as a duplicate. It’s now added as its own topic.
- Fixed: a keyword that ranked on its first check sent a “rank improved” alert. First checks don’t alert — there’s no earlier position to compare.
- Fixed: two people adding the same keyword at the same moment could make one of their lists fail. The duplicate is now skipped.
Schedule run history
When your schedules ran, and when they run next
Project Settings → Schedules now shows, for each recurring job, when it runs next and how its last run went: status, when, whether its schedule or someone started it, and how long it took. A failed run says why. A schedule that is overdue, or that was skipped because the organization had no active plan, says so. See Schedules.- Runs opens a run history for each job — or all four — ten runs at a time.
- API. New:
GET /v1/projects/{projectId}/schedulesfor where each schedule stands, andGET /v1/projects/{projectId}/schedules/runsfor the run history, paged, with an optionaljob_type.
Faster pages
Pages load what they show
Large lists now come from the server one page at a time, and detail loads when you open it, so busy projects open faster.- Backlinks. Overview loads only the summary. Backlinks, Referring Domains, Anchor Text and New & Lost each load, search and page their own list.
- Site audit detail. Duplicate Content and Resources load when you open their tab, one page at a time. An audit compared against another now counts every issue, however many there are.
- Local SEO. A keyword’s full map pack loads when you expand its row.
- Keyword research and backlink gap. A job’s keywords and a gap’s referring domains load a page at a time and are searched on the server. The summary cards above research results cover every result, worked out on the server.
- Tracking comparison and Google AI Overviews. Keywords are searched and paged on the server.
- AI search pages. A past run’s answers load when you open it.
GET /v1/projects/{projectId}/backlinks/links (with dofollow_only), …/backlinks/referring-domains, …/backlinks/anchors and …/backlinks/new-lost (with mode=new|lost). Each takes page, per_page (up to 100) and search; meta.available is false before the first analysis finishes, and meta.missing is true when an analysis finished without that list. GET …/backlinks/profile and GET …/backlinks/profile/{profileId} now return the summary only, without the lists.…/audits/{auditId}/duplicate-content,…/audits/{auditId}/resources,…/tracking/competitorsand…/tracking/ai-overview-keywordsare paged, withtotalinmeta.ai-overview-keywordsstill acceptslimitas an alias forper_page.- The AI search history (
GET …/ai-search) no longer includes each run’s results; fetch one run by its id for those. - Research jobs no longer include their results, in the list or one at a time. New:
GET …/keywords/research/{jobId}/results, paged withpage,per_pageandsearch, withmeta.summary(count, and average volume, difficulty and CPC over every result). - Gap analyses (
GET …/backlinks/gapand…/backlinks/gap/{gapId}) no longer include their rows; they carryresult_countinstead. New:GET …/backlinks/gap/{gapId}/results, paged the same way.
get_referring_domains, get_backlinks_list, get_anchor_texts, get_new_lost_backlinks, get_duplicate_content, get_broken_resources and get_competitor_comparison take page, per_page and search, and so does get_backlink_gap_result. get_backlink_gap answers with the first 25 referring domains and the total. get_geo_topic_detail returns sources and answers for the newest snapshot only; older snapshots keep their numbers. See MCP tools.MCP tools
MCP: 97 tools, and tighter checks on the ones that spend
- New:
get_backlink_gap_resultreads a gap analysis already started, free. Whenget_backlink_gaptimes out, collect the result with it — callingget_backlink_gapagain buys another analysis.get_backlink_gapnow always compares your project’s own site; it no longer takes atarget_domain. - Domain tools are the organization’s.
get_domain_overview,get_domain_top_keywords,get_domain_top_pagesandget_domain_competitorstake an optionalorganizationinstead of aproject_id, so they work while your only project is the sample. start_site_auditandtrigger_web_vitals_checktake a full URL, and default to the project’s home page when none is given.get_local_rankingsreturns the latest check’s pack by default;latest_only: falsegives the history,own_only: trueonly your listing.- Counts are what happened.
remove_tracked_keywords,delete_saved_keywordsandremove_geo_topicsreport how many were actually removed, not how many ids were sent. - Inputs match the API. Ids must be valid ids, and keywords, tags, content text and Trends date ranges are checked and trimmed the same way the API checks them — so the same question isn’t bought twice for a stray space.
- Local SEO, managed from MCP. New
update_local_locationchanges a location’s name, grid or listing;update_local_keywordpauses or resumes a keyword;remove_local_keywordsremoves keywords and their history. A grid’s spacing is now 0.5, 1, 2 or 5 km — the dashboard’s choices — over the API and MCP too. - Audits and web vitals checks are of the project’s own site — its domain or a subdomain — in the dashboard, the API and MCP. Other sites are refused.
- Finding a Google Business listing needs an active plan, and isn’t available on the sample project. It still doesn’t use an allowance.
- Rate limited per person, like the API.
Inbox and channels
Your own inbox, and your own email switch
Notifications are now Inbox, and every member has their own. Reading, selecting or deleting a notification changes it for you and nobody else. See Inbox.- Search, filter and settings in the header. Filter by Unread only and by category: rankings, backlinks, site audits, AI visibility, Local SEO, web vitals or reports.
- Select several at once. Hover a notification and its icon becomes a checkbox; a bar above the list marks them read or deletes them.
- Clearer notifications. Ranking changes show each keyword’s old and new position; backlink changes show the metric before and after, with a referring-domains spike flagged as possible spam; AI visibility leads with how many topics cite you; web vitals name the page; reports link straight to the report.
- The Inbox has moved to
/<organization>/inbox. The old address still works.
- Your notifications — Inbox and Email. Each member switches these for themselves. Turning Email off stops it reaching you; your teammates keep theirs.
- Team channels — Slack and Discord. One post per notification for the organization, connected by an owner or admin.
GET and PATCH /v1/organizations/{orgId}/notifications/me for your own switches, PATCH …/notifications/read and POST …/notifications/bulk-delete for several notifications at once. PUT …/notifications now configures Slack and Discord only.Billing
Invoices in Billing, and a banner that says where your plan stands
- Invoices are listed in Surnex — date, number, what it was for, amount and status, with View and PDF. See Invoices.
- The plan banner changes with your plan’s state — amber for a trial or a failed payment, red when a trial has ended or a plan is cancelled — with the one action that fixes it: Choose a plan, Update payment or Keep my plan. See Manage your subscription.
- Billing portal has moved to the top of the page.
Dashboard
A new project dashboard
The dashboard now shows each area in the chart that suits it: keyword rankings as a distribution bar, Google AI Overviews as stacked bars per check, AI citations per engine, your Local SEO grid, backlink growth with referring domains on their own axis, a link-profile donut, audit scores per audit and a site-health gauge.- Sections that are still collecting say so. While a job is filling a page — a rank check, an audit, a snapshot — its empty sections show the job in progress and how long it usually takes, instead of looking as if there’s no data.
- Pages refresh when a job finishes, without reloading.
Local SEO grids
Your listing, searched from every point around it
Local SEO now tracks your Google Business listing on a grid. A Maps search gives a different answer three streets away, so each keyword is searched from every point of a grid around the listing — 3×3, 5×5 or 7×7 points, 0.5 to 5 km apart — and each point records your position and the top 3 there.- Locations. A location is your listing plus its grid — what plans count as local locations. Find the listing by business name and town; Surnex recognises it by its Google listing, so a business without a website tracks the same way. Searching for a listing is free.
- Keywords at a location. Up to 10 per location, and they don’t use a location of their own. Adding keywords runs the first check straight away. Keywords can be paused, resumed or removed; they can’t be edited.
- The grid view. Open a keyword to see its grid, the top 3 at each point, and every check’s summary — the share of points in the top 3, and your average position where you’re found.
- New stat cards. In the Pack and Map Top 3 join the page, and reports gain Map Top 3 Coverage and Avg. Map Position widgets.
- Weekly by default. A check is one Maps search per keyword per point, so new projects check Local SEO weekly, like GEO.
- Paid results are excluded from positions, and a position past 20 reads as not found.
/v1/projects/{projectId}/local/places list, find, add, update and remove locations; POST /local/keywords takes a place_id and up to 10 keywords; GET /local/keywords/{keywordId}/grid returns a keyword’s grid. The MCP server gains list_local_locations, search_local_listings, add_local_location, remove_local_location and get_local_grid, and now registers 93 tools.Notifications
Email is on by default
Email notifications were effectively off for every organization: nothing ever switched them on. Email is now on for every organization until an owner or admin turns it off. Slack and Discord stay opt-in. See Notification preferences.- Scheduled reports are always emailed to the recipients their automation names, whatever the Email switch says.
- One notification per ranking alert type, so turning off Rank Improved silences only improvements.
- One notification per backlink change — backlinks dropped 20%+, referring domains down 10%+ or up 50%+, and domain rank down 50+ points. The New Backlinks and Usage Limit Warning toggles are gone; nothing sent them.
- Ranking alerts stay unread after being notified, until you open them.
- Local SEO notifications report the grid: keywords checked, points where you were found, and the top-3 share.
- Webhook URLs are checked. Slack and Discord accept only the channel’s own HTTPS incoming webhook, and members see the URL masked.
Fixes across the platform
Rank tracking
- The same keyword can be tracked in several markets — location, language or search engine — as separate keywords with their own history.
- Editing a tracked keyword is gone; it never saved most of its fields. Pause, resume and remove remain, and to change market you add it again.
- The AI Overview summary describes the newest check rather than counting every overview ever seen.
Site audits
- With Render JavaScript on, each page crawled costs 4 pages of the site audit allowance. See Run an audit.
- A crawl that reads no pages now fails with an explanation instead of scoring 100.
- Duplicate title and description issues are counted once per page.
- Noindex page is now Nofollow page — it detects the robots
nofollowdirective. The crawl data has nonoindexsignal, so the old name described something it couldn’t see.
Domain analysis
- Top Keywords are the domain’s highest-traffic keywords, with position, URL and traffic.
- Top Pages drop the backlink column, which the data source never filled, and add Traffic value.
- Competitors show whole-site keywords and traffic, plus common keywords and average position. The Rank column is gone.
- The backlink gap takes at most four competitors.
- Domain inputs — domain analysis, gap competitors, project competitors — accept a URL and reduce it to the domain, in the API and MCP as well.
- Tech stack categories are the data source’s own, grouped by type. Versions and confidence aren’t provided, so they’re no longer shown.
Backlinks
- A refresh keeps showing the last completed profile while it runs, and if it fails.
- A profile where every section failed is marked failed; one missing some sections says which.
- Competitor backlink totals cover your five oldest competitors, refreshed weekly. Your own domain follows its schedule.
Everything else
- A new project’s first run also fetches the full backlink profile — about five research lookups in all, not four.
- GEO topics get their AI volume filled on every snapshot.
- Web vitals has a Mobile/Desktop toggle, and accepts a page without
https://. - The MCP tool
get_ai_visibility_overviewreturns the GEO summary — averages and the daily trend overdays, default 30 — instead of raw snapshots. - The sample project now includes a Weekly Overview report and a Local SEO location with its grids.