---
updatedAt: 2026-08-24T09:14:57.000Z
agentTools:
  projectIndex: https://developers.vibe.co/llms.txt
---

# Search geographic locations for targeting

Returns geographic locations available for strategy targeting. Provide `type` to browse all locations of a single type (with pagination). Provide `search` (min 2 chars) to search across all types. At least one of `type` or `search` is required.
**Scopes:**
`campaigns:read`
<br>*Rate limits*:<br>Burst: `10/s`<br>Steady: `300/m`


# OpenAPI definition

```json
{
  "openapi": "3.1.0",
  "paths": {
    "/geo/locations": {
      "get": {
        "description": "Returns geographic locations available for strategy targeting. Provide `type` to browse all locations of a single type (with pagination). Provide `search` (min 2 chars) to search across all types. At least one of `type` or `search` is required.\n**Scopes:**\n`campaigns:read`\n<br>*Rate limits*:<br>Burst: `10/s`<br>Steady: `300/m`\n",
        "operationId": "listGeoLocations",
        "parameters": [
          {
            "name": "type",
            "required": false,
            "in": "query",
            "description": "Filter by location type. When provided, search is optional and returns all rows of that type if omitted.",
            "schema": {
              "type": "string",
              "enum": [
                "REGION",
                "METRO",
                "CITY",
                "ZIPCODE",
                "COUNTY",
                "CONGRESSIONAL_DISTRICT"
              ]
            }
          },
          {
            "name": "search",
            "required": false,
            "in": "query",
            "description": "Case-insensitive label search (minimum 2 characters). Required when type is not provided. In fan-out mode (no type), offset is ignored and results span all location types.",
            "schema": {
              "minLength": 2,
              "type": "string"
            }
          },
          {
            "name": "limit",
            "required": false,
            "in": "query",
            "description": "Maximum number of results to return",
            "schema": {
              "minimum": 1,
              "maximum": 100,
              "default": 20,
              "type": "number"
            }
          },
          {
            "name": "offset",
            "required": false,
            "in": "query",
            "description": "Number of results to skip (single-type mode only)",
            "schema": {
              "minimum": 0,
              "default": 0,
              "type": "number"
            }
          },
          {
            "name": "deprecated",
            "required": false,
            "in": "query",
            "description": "Include deprecated locations (REGION and CITY only). Defaults to false.",
            "schema": {
              "default": false,
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Geographic location list",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GeoLocationList"
                },
                "examples": {
                  "region": {
                    "summary": "Region",
                    "value": {
                      "data": [
                        {
                          "id": "USA/NY",
                          "label": "New York",
                          "reach": 7009535,
                          "type": "REGION"
                        }
                      ],
                      "total": 1,
                      "limit": 20,
                      "offset": 0
                    }
                  },
                  "metro": {
                    "summary": "Metro code",
                    "value": {
                      "data": [
                        {
                          "id": "501",
                          "label": "501, New York, NY",
                          "reach": 8000000,
                          "type": "METRO"
                        }
                      ],
                      "total": 1,
                      "limit": 20,
                      "offset": 0
                    }
                  },
                  "city": {
                    "summary": "City",
                    "value": {
                      "data": [
                        {
                          "id": "SRCH/CITY1",
                          "label": "East New York, NY",
                          "reach": 500000,
                          "type": "CITY"
                        }
                      ],
                      "total": 1,
                      "limit": 20,
                      "offset": 0
                    }
                  },
                  "zipcode": {
                    "summary": "Zipcode",
                    "value": {
                      "data": [
                        {
                          "id": "10001",
                          "label": "10001, New York, NY",
                          "reach": 5432,
                          "type": "ZIPCODE"
                        }
                      ],
                      "total": 1,
                      "limit": 20,
                      "offset": 0
                    }
                  },
                  "county": {
                    "summary": "County",
                    "value": {
                      "data": [
                        {
                          "id": "CTY/1",
                          "label": "Albany County, NY",
                          "reach": 300000,
                          "type": "COUNTY"
                        }
                      ],
                      "total": 1,
                      "limit": 20,
                      "offset": 0
                    }
                  },
                  "congressionalDistrict": {
                    "summary": "Congressional district",
                    "value": {
                      "data": [
                        {
                          "id": "550e8400-e29b-41d4-a716-446655440000",
                          "label": "NY-01 - New York's 1st congressional district",
                          "reach": 750000,
                          "type": "CONGRESSIONAL_DISTRICT"
                        }
                      ],
                      "total": 1,
                      "limit": 20,
                      "offset": 0
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "missingApiKey": {
                    "summary": "Missing API key",
                    "value": {
                      "error": {
                        "type": "validation",
                        "message": "Missing API Key",
                        "status": 400,
                        "detail": null,
                        "request_id": "req_8f3a4b2c",
                        "doc_url": null
                      }
                    }
                  },
                  "validationError": {
                    "summary": "Validation error",
                    "value": {
                      "error": {
                        "type": "validation",
                        "message": "Validation error",
                        "status": 400,
                        "detail": {
                          "validation": [
                            "id must be a string"
                          ]
                        },
                        "request_id": "req_8f3a4b2c",
                        "doc_url": null
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "invalidApiKey": {
                    "summary": "Invalid API key",
                    "value": {
                      "error": {
                        "type": "invalid_token",
                        "message": "Unauthorized",
                        "status": 401,
                        "detail": null,
                        "request_id": "req_8f3a4b2c",
                        "doc_url": "https://developers.vibe.co/errors/invalid-token"
                      }
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "Insufficient scope error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "insufficientScope": {
                    "summary": "Missing required scope",
                    "value": {
                      "error": {
                        "type": "insufficient_scope",
                        "message": "Missing required scope",
                        "status": 403,
                        "detail": {
                          "required": "campaigns:read",
                          "granted": [
                            "test"
                          ]
                        },
                        "request_id": "req_8f3a4b2c",
                        "doc_url": "https://developers.vibe.co/reference/oauth2token"
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "summary": "Search geographic locations for targeting",
        "tags": [
          "Reference Data"
        ],
        "x-rate-limit": {
          "rps": 10,
          "rpm": 300
        },
        "x-scopes": [
          "campaigns:read"
        ]
      }
    }
  },
  "info": {
    "title": "Vibe Public API",
    "description": "Vibe Public API revision 2026-06-01",
    "version": "2026-06-01",
    "contact": {}
  },
  "tags": [
    {
      "name": "Reference Data",
      "description": "Read-only catalogs you'll query while building a Strategy's `targeting` object: the apps, channels, and live sports inventory available to target, and the audience interest segments Vibe can match. The catalogs reflect Vibe's current inventory and audience taxonomies.\n\n> 💡 **Developer note**\n>\n> Catalogs update on a weekly cadence. Cache responses for at least 24 hours — partners that re-query on every campaign creation hit unnecessary rate-limit pressure."
    }
  ],
  "servers": [
    {
      "url": "https://api.vibe.co",
      "description": "Production API"
    }
  ],
  "components": {
    "securitySchemes": {
      "bearer": {
        "scheme": "bearer",
        "bearerFormat": "JWT",
        "type": "http"
      }
    },
    "schemas": {
      "ErrorDetail": {
        "type": "object",
        "properties": {
          "required": {
            "type": "string",
            "example": "audiences:write"
          },
          "granted": {
            "example": [
              "audiences:read",
              "reporting:read"
            ],
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "required",
          "granted"
        ]
      },
      "ApiError": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "insufficient_scope",
              "invalid_token",
              "validation",
              "internal_error"
            ]
          },
          "message": {
            "type": "string"
          },
          "status": {
            "type": "number",
            "example": 403
          },
          "detail": {
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/ErrorDetail"
              }
            ]
          },
          "request_id": {
            "type": "string",
            "example": "req_8f3a4b2c"
          },
          "doc_url": {
            "type": "string",
            "example": "https://developers.vibe.co/reference/oauth2token",
            "nullable": true
          }
        },
        "required": [
          "type",
          "message",
          "status",
          "request_id"
        ]
      },
      "ErrorResponse": {
        "type": "object",
        "properties": {
          "error": {
            "$ref": "#/components/schemas/ApiError"
          }
        },
        "required": [
          "error"
        ]
      },
      "GeoLocation": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Location identifier",
            "examples": [
              "USA/NY",
              "501",
              "5115985",
              "05442",
              "36061",
              "550e8400-e29b-41d4-a716-446655440000"
            ]
          },
          "label": {
            "type": "string",
            "description": "Human-readable location label",
            "examples": [
              "New York",
              "501, New York, NY",
              "East New York, NY",
              "05442, Belvidere Center, VT",
              "Alameda County, CA",
              "CA-01 - California's 1st congressional district"
            ]
          },
          "reach": {
            "type": "number",
            "description": "Estimated addressable reach (households for zipcodes, population for other types)",
            "example": 7009535
          },
          "type": {
            "type": "string",
            "description": "Location type",
            "enum": [
              "REGION",
              "METRO",
              "CITY",
              "ZIPCODE",
              "COUNTY",
              "CONGRESSIONAL_DISTRICT"
            ],
            "example": "REGION"
          }
        },
        "required": [
          "id",
          "label",
          "reach",
          "type"
        ]
      },
      "GeoLocationList": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GeoLocation"
            }
          },
          "total": {
            "type": "number",
            "description": "Total matching locations. In fan-out mode (search without type), this is the sum across all 6 location types.",
            "example": 1250
          },
          "limit": {
            "type": "number",
            "description": "Limit used in the query",
            "example": 20
          },
          "offset": {
            "type": "number",
            "description": "Offset used in the query. Always 0 in fan-out mode (search without type).",
            "example": 0
          }
        },
        "required": [
          "data",
          "total",
          "limit",
          "offset"
        ]
      }
    }
  },
  "security": [
    {
      "bearer": []
    }
  ]
}
```