Skip to Content
Google Ads keyword research

Get keyword ideas

Discover new keyword ideas from seed terms and/or a URL, with average monthly searches, competition and top-of-page bid ranges.

POSThttps://api.rankparse.com/v1/google-ads/keyword-ideasFree (daily caps apply)API key + connected Google Ads account

Discovers new keyword ideas from seed keywords, a page URL, or both, each with average monthly searches, competition and top-of-page bid range. Use it for keyword research and content planning. It returns volume and competition, never rankings. To size keywords you already have, use Get keyword metrics.

Each call counts as one request against your daily cap, however many ideas it returns, and only after Google answers successfully.

Body parameters

Send JSON with Content-Type: application/json. A body that is not valid JSON returns 400 invalid_json.

keywordsarray of strings

Seed keywords. Blank entries are ignored and only the first 20 are used. At least one of keywords or url is required, otherwise 400 missing_seed.

urlstring

A page or website URL to derive ideas from. If both keywords and url are sent, Google uses them together.

languagestringdefault languageConstants/1000

Google language resource name. 1000 is English. Must match languageConstants/<digits>, otherwise 400 invalid_language.

geo_target_constantsarray of stringsdefault ["geoTargetConstants/2840"]

Google location resource names. 2840 is the United States. Each must match geoTargetConstants/<digits>, otherwise 400 invalid_geo_target. Only the first 10 are used.

keyword_plan_networkstringdefault GOOGLE_SEARCH

GOOGLE_SEARCH or GOOGLE_SEARCH_AND_PARTNERS. Any other value falls back to the default.

include_adult_keywordsbooleandefault false

Include adult keywords. Only the literal true turns it on.

limitinteger

Maximum ideas to return. Clamped to 1 to 1000. When omitted, Google decides the page size.

language and geo_target_constants are Google resource names, not bare IDs. Sending "2840" instead of "geoTargetConstants/2840" fails fast with a 400 and does not use your cap. Google publishes the full lists of language and geo target IDs.

Response

dataarray

Keyword ideas.

Show properties
keywordstring

The keyword text.

metricsobject
totalinteger

Ideas in this response.

total_availableinteger | null

Total ideas Google found, which can be larger than total.

customer_idstring

The Google Ads account the call ran against.

The metrics object

avg_monthly_searchesinteger | null

Average monthly searches. Google may report heavily rounded figures for accounts without meaningful ad spend, and the response does not say whether a figure is precise.

competitionstring | null

Google's competition level for paid placement, for example LOW, MEDIUM or HIGH.

competition_indexinteger | null

Competition on a 0 to 100 scale.

low_top_of_page_bid_microsinteger | null

Low end of the top-of-page bid range, in micros of the account currency (1,000,000 micros is one currency unit).

high_top_of_page_bid_microsinteger | null

High end of the top-of-page bid range, in the same units.

Any metric can be null when Google does not return it. A per-month volume breakdown is not included.

Errors

HTTPCodeWhen
400invalid_jsonThe request body is not valid JSON.
400missing_seedNeither keywords nor url was provided.
400invalid_languagelanguage is not a resource name like languageConstants/1000.
400invalid_geo_targetgeo_target_constants is not an array of names like geoTargetConstants/2840.
400google_ads_not_connected, google_ads_no_account_selectedConnect Google Ads, or select an account, in the dashboard.
429google_ads_user_quota_exceeded, google_ads_daily_quota_exceededA daily cap was reached. See retry_after.

The other Google Ads errors (token, access and quota failures) are listed in the overview.

MCP tool: get_google_ads_keyword_ideas (accepts keywords, url, limit, language, geo_target_constants, keyword_plan_network, include_adult_keywords).