Menu

API reference · Rankings

Search volume

seo_rankings · volume · 1 operation

POST/v1/seo/rankings/projects/{project_id}/volume

Refresh search volume data

seo_rankings.volume.fetch

WriteSince 2026-11-01

Fetches from DataForSEO (paid; one call per 700 keywords) the monthly search volume, CPC, competition and 12-month trend of the project's ACTIVE keywords (or of the keyword_ids given, active ones only) and stores them on each keyword, using the location and language of the project's first engine. Returns how many keywords were requested and updated, how many failed on the provider side, and the calls made. Use it after adding keywords without search volume or to refresh stale data; it does not measure positions. Not available in demo organizations: 403 demo_read_only, already on the dry run. Outside the app it needs a dry run and its confirm_token (it pays DataForSEO).

Needs confirmation: first dry_run: true (preview and confirm_token, valid 10 minutes and for one run), then the same body with confirm_token. In a few operations only with certain data: the description says when. Why and how: Dry run and confirm_token.

Scope
seo_rankings:write
Permission
Edit in the module
MCP tool
seo_rankings_volume_fetchOn the full surface; on the compact one, mb_execute_operation with id: "seo_rankings.volume.fetch".

Declared cost: up to 502 reads and 500 writes per call (they count against the daily quota). Touches an external platform (dataforseo): it counts against the external operations quota.

Parameters

project_idstringpathrequired

Rank project id (from seo_rankings.projects.list).

keyword_idsarray<string>bodyoptional

Only these keywords. Default: every ACTIVE keyword of the project.

Response

updatednumber
requestednumber
failednumber
callsnumber
skipped_inactivenumber
not_foundarray<string>

Errors

Example

curl -X POST "https://api.mb-suite.com/v1/seo/rankings/projects/{project_id}/volume" \
  -H "Authorization: Bearer $MB_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "dry_run": true
}'

Try it with your test API key

With a test API key the request always goes to your practice organization: example data you can reset. In the practice organization this operation is not simulated (it reaches another platform): it answers 409 sandbox_external_unavailable.