Skip to content

Places

Download the complete places collection as GeoJson

GET /places.geojson

Returns one complete, current, filterable projection with no cursor pagination.

Markdown · Authoritative OpenAPI

Request policy

Operation
downloadPlacesGeoJson
Access
anonymous
Automatic retries
None
Redirects
Returned to the caller without following
Request body limit
No request body
Pagination
No collection iterator

Parameters

city string

Filter by city

country string

Filter by country

category string

Filter by category

Allowed: "food" | "coffee" | "bars" | "nature" | "entertainment" | "lodging" | "other"

neighborhood string

Filter by neighborhood

q string

Case-insensitive search across place name and location metadata

Responses

200

Complete GeoJson places export

Response headers
{
  "Content-Usage": {
    "description": "IETF AIPREF usage preferences for this public content",
    "schema": {
      "type": "string",
      "examples": [
        "train-ai=y, search=y"
      ]
    }
  },
  "Content-Signal": {
    "description": "Compatibility AI usage preferences for deployed crawlers",
    "schema": {
      "type": "string",
      "examples": [
        "ai-train=yes, search=yes, ai-input=yes"
      ]
    }
  },
  "API-Version": {
    "description": "Selected public REST contract version",
    "schema": {
      "type": "string",
      "enum": [
        "1.0.0"
      ]
    }
  },
  "RateLimit-Policy": {
    "description": "Public REST quota policy: 1000 Worker requests per 60 seconds for each source and Cloudflare location",
    "schema": {
      "type": "string"
    }
  },
  "RateLimit-Limit": {
    "description": "Compatibility form of the current public REST request limit",
    "schema": {
      "type": "integer",
      "enum": [
        1000
      ]
    }
  },
  "ETag": {
    "description": "Entity tag for conditional requests",
    "schema": {
      "type": "string"
    }
  },
  "Last-Modified": {
    "description": "Last modification date (HTTP IMF-fixdate)",
    "schema": {
      "type": "string",
      "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$",
      "examples": [
        "Sun, 06 Sep 2026 17:40:13 GMT"
      ]
    }
  },
  "Cache-Control": {
    "description": "Caching directives",
    "schema": {
      "type": "string"
    }
  },
  "X-Total-Count": {
    "description": "Total number of items",
    "schema": {
      "type": "integer"
    }
  },
  "Link": {
    "description": "RFC 8288 Web Linking header with pagination links",
    "schema": {
      "type": "string"
    }
  },
  "Link-Template": {
    "description": "RFC 9652 Link-Template header with query parameter templates",
    "schema": {
      "type": "string"
    }
  },
  "Deprecation": {
    "description": "RFC 9745 lifecycle deprecation signal",
    "schema": {
      "type": "string"
    }
  },
  "Sunset": {
    "description": "RFC 8594 lifecycle sunset date (HTTP IMF-fixdate)",
    "schema": {
      "type": "string",
      "pattern": "^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), [0-9]{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT$",
      "examples": [
        "Sun, 06 Sep 2026 17:40:13 GMT"
      ]
    }
  }
}

application/geo+json

CompletePlacesGeoJson

Schema details

type unknown required

bbox array

attribution string required

licenses string[] required

Schema details

string (uri)

features object[] required

Schema details

object

Schema details

type unknown required

id string required

geometry object required

Schema details

type unknown required

coordinates array required

properties object required

Schema details

canonicalId string required

name string required

category string required

categories string[] required

Schema details

string

address string required

neighborhood string required

city string required

country string required

latitude number required

longitude number required

website string required

Schema details

string (uri)

unknown

notes string required

url string required (uri)

googleMapsUrl string required (uri)

appleMapsUrl string required (uri)

geoUri string required

updatedAt string required (date-time)

locationSource string required

Allowed: "owner" | "openstreetmap" | "overture" | "us_census" | "wikidata"

locationSourceId string required

locationSourceUrl string required

Schema details

string (uri)

unknown

locationEvidenceUrl string required

Schema details

string (uri)

unknown

locationReviewedAt string required

Schema details

string (date-time)

unknown

attribution string required

dataLicense string required (uri)

304

Not Modified

400

Bad Request

application/problem+json

ProblemDetails

Schema details

type string required (uri)

Problem type URI (see /problems/)

title string required

Short human-readable summary

status number required

HTTP status code

detail string required

Human-readable explanation

instance string (uri)

URI reference for this occurrence

Examples

Examples use synthetic fixture values. Replace fixture identifiers with public IDs returned by the service. Request bodies and precise locations are transient; keep them out of logs.

curl

curl --fail-with-body --max-time 30 --max-filesize 16777216 --request GET 'https://irvinebroque.com/places.geojson' --header 'Accept: application/geo+json'

TypeScript

import { PublicApi } from '@irvinebroque/public-api';
const api = new PublicApi();
const result = await api.places.geojson({});
console.log(result.status, result.headers.get('content-type')); // Keep transient capabilities in memory.

CLI

irvinebroque places geojson

The SDK preserves status, headers, and the server envelope. A 304 has no fresh body. Errors retain structured problem details; ordinary error messages omit response details. Responses are limited to 16 MiB and requests time out after 30 seconds by default.