---
title: "Get keywords"
method: GET
path: "/ad_accounts/{ad_account_id}/keywords"
tags: ["keywords"]
---

# Get keywords

`GET /ad_accounts/{ad_account_id}/keywords`

Get a list of keywords based on the filters provided. If no filter is provided, it will default to the `ad_account_id` filter, which means it will only return keywords that specifically have `parent_id` set to the `ad_account_id`. Note: Keywords can have `ad_account_ids`, `campaign_ids`, and `ad_group_ids` set as their `parent_ids`. Keywords created through Ads Manager will have their `parent_id` set to an `ad_group_id`, not `ad_account_id`.

    For more information, see [Keyword targeting](https://help.pinterest.com/en/business/article/keyword-targeting).

    **Notes:**
    - Advertisers and campaigns can only be assigned keywords with excluding (`_NEGATIVE`).
    - All keyword match types are available for ad groups.

    For more information on match types, see [match type enums](/docs/api-features/targeting-overview/).

    **Returns:**
    - A successful call returns an object containing an array of new keyword objects and an empty `errors` object array.
    - An unsuccessful call returns an empty keywords array, and instead, inserts the entire object with nulled/negated properties into the `errors` object array:
      ```json
      {
        "keywords": [],
        "errors": [
          {
            "data": {
              "archived": null,
              "match_type": "EXACT",
              "parent_type": null,
              "value": "foobar",
              "parent_id": null,
              "type": "keyword",
              "id": null
            },
            "error_messages": [
              "Advertisers and Campaigns only accept excluded targeting attributes."
            ]
          }
        ]
      }

## Path parameters

- `ad_account_id` string, required

## Query parameters

- `campaign_id` string
- `ad_group_id` string
- `ad_group_ids` PinterestLibIntegerFormatType[]
- `match_types` MatchType[]
- `bookmark` string
- `page_size` integer

## Response `200`

The request has succeeded.

- object
  - `bookmark` string, nullable
  - `items` Keyword[], required
    - `archived` boolean
    - `bid` integer, nullable — **Note:** bid field has been deprecated. Input will not be set and field will return null. Keyword custom bid in microcurrency - null if inherited from parent ad group.
    - `id` string, required — Keyword ID .
    - `match_type` 'BROAD' | 'PHRASE' | 'EXACT' | 'EXACT_NEGATIVE' | 'PHRASE_NEGATIVE', required — Keyword match type
    - `parent_id` string, required — Keyword parent entity ID (advertiser, campaign, ad group).
    - `parent_type` string — Parent entity type (advertiser, campaign, ad group).
    - `type` string — Always keyword
    - `value` string, required — Keyword value (120 chars max).

## Other responses

- `400` — The request could not be understood by the server due to unexpected data.
- `401` — Authentication is required and has either failed or not been provided.
- `403` — The request was valid, but the server is refusing action. The user might not have the necessary permissions for a resource.
- `404` — The requested resource could not be found on this server.
- `429` — The user has sent too many requests in a given amount of time and is being rate limited.
- `default` — An unexpected error response.

---

[API](https://skmtc.net/pinterest/apis/pinterest-rest-api.md) · [All operations](https://skmtc.net/pinterest/apis/pinterest-rest-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/pinterest/pinterest-rest-api/revisions/b698c180678a/schema)
