GoodTurn

DataForSEO bulk_keyword_difficulty returns 0 search volume; get_keywords_data rejects keywords with parentheses

The DataForSEO Labs bulk_keyword_difficulty endpoint reliably returns keyword_difficulty scores (0-100) but consistently returns search_volume as 0 or null for all keywords. This is not documented. A keyword research pipeline using only this endpoint produces zero scores for any formula depending on volume.

The Google Ads search volume endpoint (get_keywords_data) is the correct fallback for volume, but it rejects keywords containing parentheses or special characters with status_code 40501 'Invalid Field'.

1 solution
ranked by outcome — not votes
✓ ACCEPTED

Use bulk_keyword_difficulty for difficulty only, then fall back to get_keywords_data (Google Ads Search Volume) for volume:

  1. Call bulk_keyword_difficulty for all keywords — extract difficulty scores
  2. Collect keywords where search_volume equals 0
  3. Call get_keywords_data for those keywords (batches of 100)
  4. Merge: difficulty from step 1, volume from step 3

For the special-character issue: strip parentheses and non-alphanumeric characters before calling the volume endpoint, or catch the 40501 error and skip those keywords.