Date: 2026-08-30 For: DataBlue engineering From: SearchMirror team
A short, factual brief on what we are building, how we use DataBlue today, and what we would need from the DataBlue API to move the rest of the product onto it. No action is requested beyond a feasibility read on the "What we'd need" section.
SearchMirror is an open-source, self-hostable SEO rank tracker and AI-visibility monitor. Two things it does:
- Keyword rank tracking — track a domain's Google position for a set of keywords, per country, per device.
- Geo Citations — track whether AI models (ChatGPT, Claude, Gemini, Perplexity) mention a brand for a set of prompts. (This uses the operator's own AI keys, not DataBlue.)
It is bring-your-own-key (BYOK): each account holder pastes their own DataBlue API key, and every SERP call is billed to that key. SearchMirror itself sells nothing and meters nothing — DataBlue is the SERP provider.
| Local path | D:\Github_repo\opentracker |
| Remote | none yet — private, not pushed |
| Backend | Django 3.2 (Python), MongoDB (via djongo/mongoengine) |
| Ranking engine | separate Python service (engine/), talks to DataBlue |
| Frontend | React 17 + Vite + MUI |
| Run | docker compose up — services: mongo, backend, engine, app |
The DataBlue-facing code is in engine/project/machine/automation_proxy.py
(SERP calls) and backend/account/api/views.py (key validation + balance).
Two endpoints, both authenticated with the account's key as
Authorization: Bearer <key>.
GET https://api.datablue.dev/v1/data/google/serp
Authorization: Bearer <account key>
Query params sent per keyword:
| Param | Value | Notes |
|---|---|---|
query |
the keyword (≤256 chars) | |
pages |
account's serp_depth, default 3 |
~10 organic results per page |
advanced |
false |
lightweight, organic-only |
domain |
google.com (per-keyword override) |
Google TLD |
mobile |
true / false |
from the keyword's platform |
language |
e.g. en |
derived per keyword |
country |
e.g. in |
derived per keyword |
We read position / url from the organic results to compute the domain's
rank. Calls run concurrently (semaphore width 100). This is the only thing
SearchMirror bills DataBlue for today, and it works well.
GET https://api.datablue.dev/v1/usage/summary
Authorization: Bearer <account key>
Used for two things: (1) validating a pasted key (401/403 ⇒ reject), and (2) showing the account's credit balance in Settings. We rely on this being "not charged" as documented — please keep that guarantee.
| Feature | Data it needs | Source today | On DataBlue? |
|---|---|---|---|
| Keyword rank tracking | Google SERP positions | DataBlue /google/serp |
✅ yes |
| Credit balance / key check | usage summary | DataBlue /usage/summary |
✅ yes |
| Competitor AI | SERP results to find who ranks | DataBlue /google/serp |
✅ yes |
| Geo Citations | AI model responses | operator's AI keys | n/a |
| Keyword Research | related keywords + search volume | DataForSEO | |
| Content Gap | ranked keywords for a domain | DataForSEO | ❌ no |
We would like to remove the DataForSEO dependency entirely and run the whole product on a DataBlue key. Three data needs are not covered by the current DataBlue API (as we read the docs):
-
Keyword search volume — absolute monthly search volume (and ideally CPC and a difficulty score) for a keyword + country. Today
/google/keyword-suggestionsreturns related keyword ideas with a relevance score, but no volume. Google Trends interest is relative, not absolute, so it does not substitute. -
Ranked keywords for a domain — given
example.com+ country, the list of keywords the domain ranks for, with position and volume. This is the core of DataForSEO Labsranked_keywords/live, and it powers our Content Gap feature. We could not find a DataBlue equivalent. -
Related keywords with metrics — related/expanded keywords for a seed, each with search volume, to power Keyword Research (DataForSEO Labs
related_keywords/live).
If DataBlue exposes (or plans) any of these — especially ranked keywords for a domain and keyword volume — we would move Keyword Research and Content Gap onto DataBlue immediately and retire DataForSEO from the product.
From the public docs, useful to us or adjacent:
/v1/data/google/serp— in use/v1/usage/summary— in use/google/keyword-suggestions— ideas only, no volume/google/trends-interest,/google/trends-autocomplete— relative interest/scrape,/crawl,/search,/extract— web data (not yet used)
Questions to the SearchMirror team: which endpoints and payloads to expect, rate limits, and whether the three data needs in §5 are on the DataBlue roadmap.