Systems Lab

Agent skill

tool-dataforseo

Fetch Google SERP results or keyword search-volume data via the DataForSEO API.

activeNeeds a keyActs undeclared431 words

Filed under Content and SEO.

From b2bforce/b2bforce · 29 skills · 2 · pushed 2026-08-21

What it does when it runs

Fetch Google SERP results or keyword search-volume data via the DataForSEO API. Use when a skill needs competitor discovery (SERP), keyword research, or search metrics. Reads DATAFORSEO_LOGIN and DATAFORSEO_PASSWORD from .env.

Read from the skill and the 3 files bundled beside it. A skill’s own description is written to be selected by an agent, so it describes the job and not the dependencies.

Keys and connectors you must supply
  • DATAFORSEO_PASSWORD
Hosts it reaches
  • api.dataforseo.com
  • dataforseo.com
Tool permissions it declares
No allowed-tools in the frontmatter. It does act, so it runs under whatever permissions your session already grants.
Actions present in the files
shell

Ask about tool-dataforseo

Opens your assistant with this page's verified links already in the prompt.

Is this safe to install?ClaudeChatGPT
Adapt it to my stackClaudeChatGPT
What else do I need for it to workClaudeChatGPT
Rather ask a human? Talk to Cheetah
git clone --depth 1 --filter=blob:none --sparse https://github.com/b2bforce/b2bforce.git /tmp/b2bforce
git -C /tmp/b2bforce sparse-checkout set ".agents/skills/tool-dataforseo"
mkdir -p ~/.claude/skills/tool-dataforseo
cp -R "/tmp/b2bforce/.agents/skills/tool-dataforseo/." ~/.claude/skills/tool-dataforseo/

Picked up without a restart. A project skill of the same name is shadowed by your personal one. For one repository only, swap ~/.claude/skills for .claude/skills. Claude Code docs ↗

The folder is the same in every client that implements the format — 46 of them — so if yours is not above, only the destination changes.

Before you install: this skill will not complete its job on a bare agent. It needs DATAFORSEO_PASSWORD, which you have to obtain separately.

Reproduced in full from b2bforce/b2bforce/blob/7682ed90c62190a0f3c09eb135596d08bd6890bc/.agents/skills/tool-dataforseo/SKILL.md, which is licensed MIT (skill frontmatter). 431 words, 13 headings.

Tool: DataForSEO

Thin wrapper for the DataForSEO API — SERP results and keyword data. Other skills call this instead of re-describing the API.

Requirements

  • curl
  • jq
  • .env credentials listed below

Auth

.env:

DATAFORSEO_LOGIN=
DATAFORSEO_PASSWORD=

HTTP Basic auth (login:password). Base: https://api.dataforseo.com/v3. Request bodies are an array of task objects.

Endpoints

ActionEndpointUse
SERPPOST /serp/google/organic/live/advancedTop organic results for a phrase
Keyword volumePOST /keywords_data/google_ads/search_volume/liveSearch volume / CPC / competition
LLM responsePOST /ai_optimization/{engine}/llm_responses/liveAnswer-engine response + cited sources
LLM modelsPOST /ai_optimization/{engine}/llm_responses/modelsModel names the engine currently accepts
AccountPOST /appendix/user_dataCheck balance / credentials

location_name uses DataForSEO format, e.g. "Poland", "United States".

{engine} is chat_gpt, claude, gemini, or perplexity. The request shape is the same across engines; only some optional parameters differ.

Scripts

# Top 10 organic results for a phrase + country (prints url + title list)
bash .agents/skills/tool-dataforseo/scripts/serp.sh "drupal migration agency" "Poland"

# Keyword search volume (prints JSON)
bash .agents/skills/tool-dataforseo/scripts/keyword.sh "drupal migration" "Poland"

# Answer-engine response + cited sources (prints answer, citations, model, cost)
bash .agents/skills/tool-dataforseo/scripts/llm-response.sh chat_gpt \
  "best drupal migration agency for mid-market retail" PL

# Which models this engine currently accepts — run this first, names drift
bash .agents/skills/tool-dataforseo/scripts/llm-response.sh --models chat_gpt

# Raw JSON passthrough
bash .agents/skills/tool-dataforseo/scripts/llm-response.sh --json perplexity "..." PL

llm-response.sh notes

  • web_search is forced on. Without it the answer is not grounded in the live web and returns no citations, which makes the run useless for visibility work.
  • Prompts are capped at 500 characters by the API. The script fails on a longer prompt rather than truncating it, because a silently shortened prompt makes runs incomparable across batches.
  • Only response items of type message are the answer. Reasoning items are excluded.
  • An empty citation list prints none, so "no citations" is distinguishable from a failed extraction.
  • Model names change. If a call fails on model_name, run --models and pass one.

Rules

  1. Credentials from .env only.
  2. Paid API — cache results in workspace/ where possible; don't re-query.
  3. For competitor discovery, dedupe by root domain after fetching.
  4. Degrade gracefully if unset — calling skills should fall back to AI research.
  5. Answer engines are non-deterministic. One LLM response is a sample, not a fact; the calling skill decides how many runs make a finding.

Used by

intel-competitor-discovery (SERP), marketing-seo-research (keywords), marketing-service-page (SERP), intel-ai-visibility (LLM responses).

Files bundled with it

These load only when the skill asks for them, so they cost nothing until it runs.

Other skills for the same job

Different authors, same problem. Matched on the words in the skill name, across every library in the catalogue except this one.

Need help setting it up?

This page tells you what tool-dataforseo does and what it needs. Cheetah builds the agent setup it runs inside: data, CRM, sequencing and the guardrails.

Book a call →

The directory stays free. There is nothing gated behind this.