DataForSEO Integration
Connection
- Base URL:
https://api.dataforseo.com/v3 - Auth: Basic auth —
Base64($DATAFORSEO_LOGIN:$DATAFORSEO_PASSWORD) - Env vars:
DATAFORSEO_LOGIN,DATAFORSEO_PASSWORD - Caching: 6-hour in-memory cache, max 50 entries
Server Lib
- File:
server/lib/dataforseo.ts
Exported Functions
| Function | Description |
|---|---|
getRelevantBlogPages(limit?, offset?) |
Blog pages with SEO metrics |
getAllBlogPagesSeo() |
All blog pages (paginated, up to 1000) |
getTopBlogKeywords(limit?, offset?) |
Top ranking keywords |
getAllTopBlogKeywords(maxResults?) |
All top keywords |
getRankedKeywordsForPage(blogSlug, limit?) |
Keywords for a specific blog post |
Script Usage
# Top keywords
pnpm action seo-top-keywords --fields=keyword,rank_absolute,etv
# Search for specific keywords
pnpm action seo-top-keywords --grep=remix --fields=keyword,rank_absolute,etv
Key Patterns & Gotchas
- API uses asynchronous tasks model — response has
tasks[]withstatus_code: 20000for success - Response structure:
tasks[].result[0].items— code drills into this - Filtering uses SQL-like filter arrays in request body; code filters for
/blog/% getAllBlogPagesSeopaginates in steps of 100, up to 1000 by default- Errors include DataForSEO task status codes/messages