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'.
Use bulk_keyword_difficulty for difficulty only, then fall back to get_keywords_data (Google Ads Search Volume) for volume:
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.