> ## Documentation Index
> Fetch the complete documentation index at: https://docs.surnex.io/llms.txt
> Use this file to discover all available pages before exploring further.

# October 2026

> A market for each part of Surnex, an export on every table, refreshes that ask before they spend, and ranking figures counted as Semrush counts them.

<Update label="4 October 2026" description="Reporting API and read-only keys">
  ### Reporting API

  Every figure Surnex tracks — rankings, AI Overviews, backlinks, site audit, web vitals, AI visibility, Local SEO and domain overview — is now available to reporting tools such as Oviond, **as of any date**. One call gives each figure's value at the end of a period, its value before the period started, the change, and a point per day for charts. It reads stored data only, so it never spends your allowance. `GET /v1/reporting` lists what's available; `GET /v1/projects/{projectId}/reporting/{view}` answers it. See [Reporting API](/api/reporting).

  ### Read-only API keys

  A new key now chooses its access: **Read Only** (the default) reads your data and nothing else — no changes, no paid lookups — and is the key to give a reporting tool. **Full Access** is what every key was before, and existing keys keep it. See [Create an API key](/api-keys/add).

  ### Reports show the period you chose

  A report's figures and tables are now as of the **last day of its date range**: a September report shows 30 September whenever it's opened — its keyword list, gainers and losers, prompts and figures alike — where it used to show today's for most of them. Each figure's change compares it with the period before, and a falling position is shown as the improvement it is. See [Report editor](/reports/editor#date-range).

  * **What was tracked when.** Surnex now records when each keyword, local keyword and prompt is added, paused, resumed and removed, so a day's figures count exactly what was tracked that day. A failed check no longer drops a keyword from that day's count, and a paused keyword stops counting the day it's paused.
  * **Your timezone.** Audits, web vitals checks and domain refreshes are dated in your organization's timezone, like rank checks.
  * **Domain history.** Each domain overview refresh is now kept, so domain figures have a history in reports and the reporting API — from today on, since only the latest overview was kept before.
</Update>

<Update label="4 October 2026" description="Ranking figures">
  ### Ranking figures counted as Semrush counts them

  * **Avg Position counts a keyword outside the top 100 as 100.** It used to leave those keywords out, so the average got *better* when a keyword fell out of the top 100. Now losing a keyword makes it worse and gaining one makes it better. Expect your average to read higher than before if you track keywords you don't rank for yet. See [Ranking overview](/tracking/overview#how-avg-position-counts-a-keyword-that-doesnt-rank).
  * **New in Top 100 and Lost from Top 100.** Two new cards on **Tracking → Overview**, beside **Improved** and **Declined**, which now count only moves inside the top 100. A keyword's first check counts in none of the four. See [Ranking overview](/tracking/overview#improved-declined-new-and-lost).
  * **New and Lost in the keyword list.** The change on a keyword card reads **New** or **Lost** for a move into or out of the top 100, where it used to show `—`, and the CSV export says the same.
  * **`>100` instead of `—`.** Wherever a check found a keyword outside the top 100 — the keyword list, its history, competitor comparison, alerts, notifications and alert emails, AI Overviews, report tables and every export — it now reads `>100`. `—` is kept for a keyword that hasn't been checked yet. The **Position Over Time** chart draws those checks at 100 instead of leaving them out. See [Keyword history](/tracking/keyword-history).
  * **Local SEO counts a miss at 20.** The Local SEO chart and a keyword's history list every check, a check that didn't find you in the top 20 drawn at 20 and written `>20`, where the days you dropped out used to be skipped. **In the Pack** counts each keyword's latest check — it counted the last check you appeared in, however old. The keyword list says when you're *not at your listing but found at 4 of 9 points* on its grid. See [Local SEO](/local/overview#ranking-chart).
  * **Reports** have two new presets, **New in Top 100** and **Lost from Top 100**, and the **Ranking History** chart's daily average counts a keyword outside the top 100 as 100, like **Avg Position**. See [Report editor](/reports/editor).
  * **API and MCP.** The ranking overview returns `entered_top100` and `lost_top100`, and each tracked keyword returns `checked_before` — whether it had been checked before its latest check, which tells a keyword new to the top 100 from one checked for the first time.
</Update>

<Update label="1 October 2026" description="Exports and refreshes">
  ### Export any table

  Every data table now has a **⋮** menu — three vertical dots in a bordered button at the right end of its toolbar, next to the search box, or in the card's title row when the table has no search box. It offers **Export as CSV**, which opens in Excel and Google Sheets, and **Export as JSON**.

  * **Every matching row.** An export holds every row matching the table's current search, not just the page on screen, with the table's own columns, up to 10,000 rows.
  * **Free.** Exports read stored data and spend no allowance.
  * **The header Export buttons are gone** from Rank Tracking, Backlinks and the audit detail page — each of their tables has its own menu instead. Reports keep their PDF and CSV export on [Sharing & Export](/reports/share), and the API's CSV export endpoints are unchanged.

  ### Paid refreshes ask first

  A refresh you start yourself spends your monthly allowance, so it now opens a confirm saying what it fetches again, what it costs and how many you have left this month. That covers **Refresh** on Backlinks, Domain Overview and Tech Stack, and running a past search again from a history list (1 research lookup each); **Check Now** on an AI prompt (1 research lookup); re-running an AI search — AI Mode, ChatGPT, LLM benchmark, citation gap, AI keyword trends (1 AI brand audit); and re-checking a Web Vitals URL (1 site audit page). See [Usage and limits](/billing/usage#refreshes-ask-first).

  ### One button on Backlinks

  The Backlinks header has one button, **Refresh**, for the first analysis and every one after it, in place of **Run Analysis** and **Refresh**. It fetches the backlinks, referring domains, anchors and new and lost lists again. The scheduled backlink snapshot updates only the totals and the history chart, not those lists. See [Backlinks](/backlinks/overview#running-an-analysis).
</Update>

<Update label="1 October 2026" description="A market for each service">
  ### Each part of Surnex has its own market

  Rank tracking, keyword research and AI visibility use different data sources, and each takes its own places and languages. A project now has a market for each, and every picker offers only what its source takes. Nothing is switched to another market behind your back.

  * **Creating a project.** Four steps now; Local SEO locations are added from the Local SEO page once the project exists. **Competitors** says **Skip** until you add one. *Where to Measure* has a section each for rank tracking, keyword research and AI visibility, closed, each showing its market on one line. Research and AI visibility start on your rank tracking choice; when a source doesn't take it (South Africa in Zulu has no research), the nearest market it does is preselected, marked **Nearest supported**, and the section says why. See [Add a project](/projects/add).
  * **No markets in Project Settings.** Each keyword and prompt has its own, chosen when it's added; Keyword Research has a country and language in each tab's form; Trends and the AI search pages open theirs in a panel from the button beside the page title, like Add Keywords. Each starts on the project's. See [Project Settings](/projects/settings).
  * **AI visibility** is measured by country, in a language all six engines answer in, so every prompt is answered by all six. New prompts and AI searches start on the AI visibility market chosen when the project was created. See [AI visibility](/geo/overview).
  * **Topics are now prompts.** What AI visibility tracks is called a prompt, matching the plans' *AI prompts*. **Add Prompts** takes one prompt per line — commas no longer separate them, since a question often contains one. See [AI visibility](/geo/overview#add-prompts).
  * **Search volume.** Languages Google Ads has no volume in are marked *Ranked, but no search volume* when you add keywords.
  * **Local SEO** locations have their own Google Maps language.
  * **Google Trends** says clearly when the language chosen isn't one Trends covers (Norwegian `nb`), rather than failing.
  * **API and MCP.** Projects return `tracking_location_code`, `tracking_language_code`, `ai_location_code` and `ai_language_code` alongside the research market (`location_code`, `language_code`), and take them on create and update — on create as `research_*`, `ai_*` and `local_*`. A market left out is the tracking one when its service takes it, and refused with the fields to send when it doesn't. New: `GET /v1/reference/ai-visibility/languages` and `GET /v1/reference/ai-visibility/countries`; `list_search_languages` takes `for: tracking | ai_visibility | research`.

  ### Removed

  * **Content tools.** The **Content Tools** page (Grammar Check and Paraphrase), **Generate Meta Tags** on a site audit and **Content Brief** on Keyword Research are gone, with the API routes `/v1/content/meta-tags`, `/v1/content/brief`, `/v1/content/grammar` and `/v1/content/paraphrase` and the MCP tools `generate_meta_tags`, `generate_content_brief`, `check_grammar` and `paraphrase_text`. DataForSEO retired the Content Generation API they ran on. The MCP server now has 95 tools.
</Update>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.