What SEO Tasks Can Be Performed with OpenSEO and DataForSEO

OpenSEO and DataForSEO together enable comprehensive SEO automation including SERP crawling, rank checking, backlink analysis, keyword research, Google Ads metrics, Lighthouse performance audits, local business data retrieval, and AI-powered content insights through a type-safe TypeScript interface.

OpenSEO is an open-source TypeScript framework that wraps the DataForSEO API to provide programmatic access to enterprise-grade SEO data. By abstracting raw REST endpoints into typed functions located in src/server/lib/dataforseo/, the library simplifies complex workflows ranging from real-time rank tracking to technical performance auditing while automatically handling response validation, billing metadata, and error normalization.

SERP Crawling and Rank Tracking

The src/server/lib/dataforseo/serp.ts module exposes functions to query live Google search results and track domain positioning.

  • fetchLiveSerp – Retrieves the first N organic results for a keyword, location, and language in real time.
  • fetchRankCheckSerp – Crawls SERPs until it finds a target domain to minimize API costs, returning the exact position.
  • fetchLocalSerp – Queries Google Maps or Local Finder results for location-based SEO analysis.
  • postRankCheckTasks – Queues bulk rank-check tasks via DataForSEO's task queue for asynchronous, cost-effective processing.

Code Example: Live SERP Fetch

import { fetchLiveSerp } from "@/server/lib/dataforseo/serp";

const { data, billing } = await fetchLiveSerp({
  keyword: "open source seo tool",
  locationCode: 2840,
  languageCode: "en",
  depth: 20
});

console.log(data.items);   // Array of organic results
console.log(billing.costUsd); // Request cost tracking

Located in src/server/lib/dataforseo/backlinks.ts, the backlink module provides granular link intelligence.

  • fetchBacklinksRows – Returns individual backlink records with optional spam-score filtering.
  • fetchBacklinksSummary – High-level metrics including total links and referring domains.
  • fetchReferringDomains – Aggregated domain-level link data.
  • fetchBacklinksHistory – Time-series data tracking link growth over custom date ranges.
import { fetchBacklinksRows } from "@/server/lib/dataforseo/backlinks";

const { data, billing } = await fetchBacklinksRows({
  target: "example.com",
  includeSubdomains: true,
  limit: 100,
  filters: ["dofollow", "main_page"]
});

console.log(data.items);   // Detailed backlink objects
console.log(billing);      // API usage cost

Keyword Research via DataForSEO Labs

The src/server/lib/dataforseo/labs.ts file implements the DataForSEO Labs API for discovering and evaluating keywords.

  • fetchKeywordIdeas – Generates keyword suggestions with search volume, CPC, and competition metrics.
  • fetchRelatedKeywords – Finds semantically related terms to expand content clusters.
  • fetchDomainRankOverview – Shows a domain's organic visibility across multiple locations.
  • fetchRankedKeywords – Lists all keywords a domain ranks for, including position and traffic estimates.
  • fetchSerpCompetitors – Identifies organic competitors for specific keywords.

Code Example: Keyword Ideas Discovery

import { fetchKeywordIdeas } from "@/server/lib/dataforseo/labs";

const { data, billing } = await fetchKeywordIdeas({
  keyword: "content marketing strategy",
  languageCode: "en",
  locationCode: 2840
});

console.log(data); // Array of keyword opportunities with metrics

For paid search analysis, src/server/lib/dataforseo/keyword-metrics.ts and google-ads.ts provide advertising data.

  • fetchKeywordMetricsForList – Batch retrieval of search volume, CPC, and competition levels for multiple keywords via the Google Ads API.
  • fetchAdsSearchVolume – Single-keyword ad-specific volume data.
  • fetchAdsKeywordIdeas – Generates keyword suggestions based on seed terms using Google Ads logic.

Lighthouse Performance Audits

Technical SEO auditing is handled in src/server/lib/dataforseo/lighthouse.ts.

  • fetchLighthouseResult – Executes a full Lighthouse audit (performance, accessibility, SEO, best practices) via DataForSEO's infrastructure.

Code Example: Technical SEO Audit

import { fetchLighthouseResult } from "@/server/lib/dataforseo/lighthouse";

const { data, billing } = await fetchLighthouseResult({
  url: "https://example.com",
  device: "desktop"
});

console.log(data.performance_score);  // Lighthouse metrics

Local Business Data

The src/server/lib/dataforseo/business.ts module manages Google Business Profile interactions.

  • fetchBusinessListingsSearch – Searches for business listings by query and location.
  • fetchGoogleReviews – Retrieves review data for specific business entities.
  • postMyBusinessUpdatesTask – Schedules posts or offers to Google Business Profiles.
  • fetchBusinessListingsCategories – Returns available business category taxonomies.

AI-Powered Content Insights

Located in src/server/lib/dataforseo/ai.ts, these functions analyze LLM-generated content and responses.

  • fetchLlmMentionsSearch – Finds brand or keyword mentions across LLM outputs.
  • fetchLlmAggregatedMetrics – Provides content quality statistics (word count, readability).
  • fetchLlmTopPages – Identifies top-ranking pages for queries according to LLM analysis.
  • fetchLlmResponse – Directly queries underlying LLMs for structured SEO content generation.

Unified Response Architecture

Every function in OpenSEO returns a standardized DataforseoApiResponse<T> defined in src/server/lib/dataforseo/envelope.ts. This envelope guarantees:

  • Type Safety – Runtime validation via Zod schemas (e.g., serpSnapshotItemSchema, backlinksItemSchema).
  • Billing Transparency – Each response includes a billing object containing the exact API cost in USD.
  • Error Normalization – Errors are wrapped in DataforseoChargedTaskError with helper functions like assertOk to distinguish between "no results" and actual failures.

The client factory in src/server/lib/dataforseo/client.ts centralizes authentication, retry logic, and caching across all modules.

Summary

  • OpenSEO abstracts DataForSEO's REST API into typed TypeScript functions for SERP crawling, backlink analysis, and keyword research.
  • Core modules reside in src/server/lib/dataforseo/ with specific files for SERP (serp.ts), backlinks (backlinks.ts), labs (labs.ts), and technical audits (lighthouse.ts).
  • All functions return a unified response containing both data and billing fields for cost tracking.
  • Google Ads metrics and local business data extend coverage to paid search and regional SEO.
  • AI integration via ai.ts enables analysis of LLM-generated content and automated content generation.

Frequently Asked Questions

How does OpenSEO handle API billing and cost tracking?

OpenSEO automatically extracts billing information from every DataForSEO response through the DataforseoApiResponse envelope. Each function returns a billing object containing the exact cost in USD, enabling real-time budget monitoring without manual calculation.

Can I perform bulk rank checking without incurring live SERP costs?

Yes. Use the postRankCheckTasks function in src/server/lib/dataforseo/serp.ts to queue rank-check tasks via DataForSEO's task queue. This approach is more cost-effective than live crawling for large keyword sets, and you can retrieve results later using fetchRankCheckTaskResult.

Does OpenSEO support local SEO and Google Business Profile data?

Yes. The library includes comprehensive local SEO support through src/server/lib/dataforseo/business.ts, which provides functions for searching business listings, retrieving reviews, posting updates, and fetching category lists specifically for Google Business Profiles.

What TypeScript types ensure response safety in OpenSEO?

The framework uses Zod schemas defined throughout the dataforseo directory (such as serpSnapshotItemSchema and backlinksItemSchema) to validate API responses at runtime. These schemas provide static TypeScript types that prevent runtime errors when accessing nested SERP or backlink properties.

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 →