What Kind of Data Does Open-SEO Collect? A Complete Breakdown of Its SEO Data Pipeline

Open-SEO collects keyword research metrics, SERP results, rank tracking data, site audit crawls, Google Search Console statistics, backlink profiles, and domain authority scores—combining user inputs with third-party API data from DataForSEO, Ahrefs, and Google APIs.

Open-SEO is a full-stack SEO platform built for developers who need programmatic access to search intelligence. Its architecture spans multiple data domains, each responsible for ingesting, validating, and persisting specific types of SEO data. Understanding what data Open-SEO collects requires examining its server functions, MCP tools, and database schema.

This article breaks down every data category processed by the platform, tracing how each flows from external APIs or user input into the internal PostgreSQL-backed system.


Keyword Research Data

Open-SEO gathers comprehensive keyword intelligence through DataForSEO's API endpoints. The platform wraps these calls in the KeywordResearchService and exposes them as MCP tools.

Key data points collected:

  • Seed keywords and related keyword suggestions
  • Monthly search volume
  • Cost-per-click (CPC) estimates
  • Keyword difficulty scores
  • Competition metrics

Source implementation:

The researchKeywords method accepts parameters like maxKeywordsPerSeed to control API usage and returns normalized objects validated against src/types/schemas/keywords.ts.

// src/server/mcp/tools/research-keywords.ts
import { KeywordResearchService } from "@/server/features/keywords/services/KeywordResearchService";

const seeds = ["seo tools", "open source seo"];
const result = await KeywordResearchService.researchKeywords(seeds, {
  maxKeywordsPerSeed: 150,
});
// Returns: array of keyword objects with volume, difficulty, CPC, etc.

SERP Results Data

Live search engine results are fetched via DataForSEO's serp-live API or a Google Ads API fallback. These snapshots capture the competitive landscape for any given query.

Data collected per SERP:

  • Organic ranking positions and URLs
  • Featured snippets
  • Advertisements and shopping results
  • Local pack entries
  • Rich result types

The fetchSerpResults helper in src/server/mcp/tools/get-serp-results.ts handles the API coordination, storing raw JSON responses for downstream analysis.

// src/server/mcp/tools/get-serp-results.ts
import { fetchSerpResults } from "@/server/mcp/tools/get-serp-results";

const serpData = await fetchSerpResults({
  keyword: "best seo software",
  locationCode: 2840, // United States
  device: "desktop"
});

Rank Tracking Data

Open-SEO operates a periodic rank monitoring system that records position changes over time for tracked keywords.

The RankCheckWorkflow (src/server/workflows/RankCheckWorkflow.ts) orchestrates:

  • Scheduled SERP snapshots for each keyword/device combination (desktop and mobile)
  • Position normalization against the rank_tracking table
  • Historical trend calculation

Source files:

This data layer enables position history graphs, volatility alerts, and competitive displacement tracking.


Site Audit Data

The platform performs automated technical SEO crawls through siteAuditWorkflowCrawl.ts. These audits classify page health and performance characteristics.

Collected per URL:

  • HTTP response status codes
  • Fetch classification (ok / blocked / error)
  • Page title and meta description extraction
  • Lighthouse performance scores (optional)
  • Crawl depth and internal link graph
// src/server/workflows/siteAuditWorkflowCrawl.ts
import { crawlSite } from "@/server/workflows/siteAuditWorkflowCrawl";

await crawlSite({
  projectId: "proj_abc123",
  url: "https://example.com",
  userId: "user_xyz789",
  maxPages: 1000,
  enableLighthouse: true
});

Results persist in the audit schema defined in src/db/schema.ts, with src/serverFunctions/audit.ts handling result ingestion and retrieval.


Google Search Console Data

Open-SEO integrates directly with Google's Search Console API through GscService in src/serverFunctions/gsc.ts.

Synchronized metrics:

  • Impressions per query and page
  • Click counts and click-through rate (CTR)
  • Average position per query
  • Date-range aggregated performance

This data feeds reporting dashboards and correlates with rank tracking to identify keyword opportunity gaps.


Two external providers supply off-page SEO intelligence:

DataForSEO backlinks endpoint (src/serverFunctions/backlinks.ts):

  • Referring domains and URLs
  • Anchor text distribution
  • Link type classification (dofollow/nofollow)
  • First seen / last seen timestamps

Ahrefs API (src/serverFunctions/ahrefs.ts):

  • Domain Rating (DR)
  • URL Rating (UR)
  • Backlink counts and referring domain counts
  • Organic traffic estimates

The fetchDomainRating function normalizes these metrics for consistent UI presentation across the platform.


User-Generated and Project Metadata

Beyond external API data, Open-SEO manages first-party data created by platform users:

Data Type Collection Method Storage Location
Saved keyword tags and notes save_keywords MCP tool saved_keywords table
Project configuration ProjectService projects table
Usage limits and credit balances BillingService billing table
User permissions and access controls Authentication layer users / project_members tables

These operations consume no external API credits—they interact solely with the internal database validated through Zod schemas like src/types/schemas/keywords.ts.


Data Validation and Schema Architecture

All inbound data passes through Zod validation layers before persistence:

This guarantees type safety across the TypeScript codebase and prevents malformed API responses from corrupting the database.


Summary

Open-SEO collects and processes three distinct data layers:

  • User inputs — seed keywords, project settings, tags, and annotations
  • External API data — DataForSEO, Ahrefs, Google Search Console, and Google Ads API responses
  • Derived platform data — crawl results, Lighthouse scores, rank snapshots, and usage telemetry

Key architectural components include:

  • KeywordResearchService for keyword intelligence
  • RankCheckWorkflow for position monitoring
  • siteAuditWorkflowCrawl.ts for technical audits
  • GscService and Ahrefs integrations for authority metrics
  • Zod schemas and Drizzle ORM for data integrity

Frequently Asked Questions

What external APIs does Open-SEO rely on for data collection?

Open-SEO primarily uses DataForSEO for keyword research, SERP results, rank tracking, and backlink data. It integrates Ahrefs for domain authority metrics and Google Search Console API for performance data. A Google Ads API fallback exists for SERP retrieval when needed.

Does Open-SEO store historical rank tracking data?

Yes. The RankCheckWorkflow in src/server/workflows/RankCheckWorkflow.ts periodically snapshots SERP positions and persists them to the rank_tracking table. This enables historical trend analysis, position volatility alerts, and competitive benchmarking over time.

How does Open-SEO validate the data it collects?

All data passes through Zod schemas before database insertion. Files like src/types/schemas/keywords.ts and src/types/schemas/ai-search.ts define strict validation rules. The Drizzle ORM schema in src/db/schema.ts provides additional type safety at the persistence layer.

Can users add their own data without consuming API credits?

Yes. The save_keywords and list_saved_keywords MCP tools allow users to persist keywords with custom tags and notes directly to the saved_keywords table. These operations involve no external API calls and rely entirely on internal database storage.

Have a question about this repo?

These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:

Share the following with your agent to get started:
curl -s "https://instagit.com/install.md"

Works with
Claude Codex Cursor VS Code OpenClaw Any MCP Client

Maintain an open-source project? Get it listed too →