---
type: "firecrawl-provider"
description: "OpenStreetMap data: Nominatim geocoding (forward and reverse), Overpass category search inside a bbox, radius, administrative area or polygon, and the OSM API v0.6 for element detail, batch fetch, bbox map dumps, element history, changesets and map notes."
use_when: "OpenStreetMap data: Nominatim geocoding (forward and reverse), Overpass category search inside a bbox, radius, administrative area or polygon, and the OSM API v0.6 for element detail, batch fetch, bbox map dumps, element history, changesets and map notes."
categories: "Places"
capabilities: 9
credits_per_call: 5
---
# OpenStreetMap on Firecrawl Alexandria

OpenStreetMap data: Nominatim geocoding (forward and reverse), Overpass category search inside a bbox, radius, administrative area or polygon, and the OSM API v0.6 for element detail, batch fetch, bbox map dumps, element history, changesets and map notes.

- Categories: Places
- Category index: [Places category](https://firecrawl.dev/alexandria/agents/categories/places)
- Provider key: `openstreetmap-org`
- Access: Firecrawl credits
- Cost: 5 credits per call

## More

- [Human guide](https://firecrawl.dev/app/alexandria/openstreetmap-org)
- [OpenAPI spec](https://firecrawl.dev/alexandria/agents/providers/openstreetmap-org/openapi.json)

## Capabilities

- [Changesets](https://firecrawl.dev/alexandria/agents/providers/openstreetmap-org/places/changesets): Recent changesets from the OSM API v0.6 (`GET /api/0.6/changesets.json`), newest first, filtered by bounding box and/or editor display name, optionally closed ones only. Each changeset carries its counts, bbox and tags (comment, created_by, source).
- [Element history](https://firecrawl.dev/alexandria/agents/providers/openstreetmap-org/places/element_history): Every version of one OSM element from the OSM API v0.6 (`GET /api/0.6/{type}/{id}/history.json`), oldest first, with tags, coordinates, changeset and editor per version (deleted versions carry `visible: false`).
- [Geocode](https://firecrawl.dev/alexandria/agents/providers/openstreetmap-org/places/geocode): Geocode a free-text query (`query`) or a structured address (`street`, `city`, `county`, `state`, `country`, `postalcode`) with Nominatim (`GET nominatim.openstreetmap.org/search`, format jsonv2, addressdetails and extratags on). Returns places with their OSM type and id, coordinates, category/type, address breakdown and bounding box; with `polygon: true` also the boundary GeoJSON, so a city or neighbourhood polygon can feed `search_elements`. Continues with `continuation` (Nominatim `exclude_place_ids`).
- [Get element](https://firecrawl.dev/alexandria/agents/providers/openstreetmap-org/places/get_element): Fetch one OSM element by type and id from the OSM API v0.6 (`GET www.openstreetmap.org/api/0.6/{type}/{id}.json`): version, timestamp, changeset, editor, tags, node coordinates, way node ids or relation members. With `full: true` on a way or relation (`/full.json`) the referenced nodes (and member ways) come back in `related`, so the geometry can be rebuilt.
- [Get elements](https://firecrawl.dev/alexandria/agents/providers/openstreetmap-org/places/get_elements): Fetch up to 100 elements of one type in a single OSM API v0.6 multi-fetch (`GET /api/0.6/nodes.json?nodes=...`, `ways.json`, `relations.json`). Deleted elements come back with `visible: false`; an id that never existed makes the source answer 404 for the whole batch (`not_found`).
- [Map bbox](https://firecrawl.dev/alexandria/agents/providers/openstreetmap-org/places/map_bbox): Download every element in a small bounding box from the OSM API v0.6 (`GET /api/0.6/map.json?bbox=`): all nodes inside, the ways that reference them (with their nodes) and the relations that reference those. Source limits: area at most 0.25 square degrees and at most 50 000 nodes, otherwise the source rejects the request (`invalid_input`). `include_untagged: false` drops nodes without tags from the output (way geometry nodes) to keep it small.
- [Notes](https://firecrawl.dev/alexandria/agents/providers/openstreetmap-org/places/notes): Map notes (user-reported problems) in a bounding box from the OSM API v0.6 (`GET /api/0.6/notes.json?bbox=`): position, status, creation date and the comment thread. `closed_days` controls how long ago a closed note may have been closed to still appear (0 = open notes only, -1 = all). Source limit: bbox area at most 25 square degrees.
- [Reverse geocode](https://firecrawl.dev/alexandria/agents/providers/openstreetmap-org/places/reverse_geocode): Reverse-geocode a coordinate with Nominatim (`GET nominatim.openstreetmap.org/reverse`, jsonv2): the nearest place at the requested `zoom` (18 building, 16 street, 14 suburb, 10 city, 3 country) with its OSM type/id, address and bounding box.
- [Search elements](https://firecrawl.dev/alexandria/agents/providers/openstreetmap-org/places/search_elements): Find OSM elements by tag inside a bounding box, a radius around a point, an administrative area (relation id) or a polygon, through the Overpass API that powers the website's Query Features tool (`POST query.openstreetmap.org/query-features`, Overpass QL `out tags center`). `tags` is a map of tag key to value; the value `*` means the key must exist. Returns typed elements (node/way/relation) with id, tags, node coordinates or way/relation centre, and the data timestamp. Overpass has no cursor: a result that reaches `limit` is marked partial; tile the area or raise `limit`.

## 1. Choose this provider when

OpenStreetMap data: Nominatim geocoding (forward and reverse), Overpass category search inside a bbox, radius, administrative area or polygon, and the OSM API v0.6 for element detail, batch fetch, bbox map dumps, element history, changesets and map notes.

## 2. Minimal request

Call `POST https://api.firecrawl.dev/v2/scrape` with `{ alexandria: { provider, capability, options } }`. For a batch, send `{ alexandria: [...] }` with up to 10 calls.

```json
{
  "provider": "openstreetmap-org",
  "capability": "places/changesets",
  "options": {
    "bbox": "-51.2320,-30.0340,-51.2290,-30.0315",
    "closed_only": true,
    "limit": 3
  }
}
```

## 3. Add provider options

Use only the options needed for the task:

- `bbox` (string): Bounding box `min_lon,min_lat,max_lon,max_lat` (left,bottom,right,top) in WGS84 decimal degrees, the OSM API convention. Pattern: ^\s*-?\d+(\.\d+)?\s*,\s*-?\d+(\.\d+)?\s*,\s*-?\d+(\.\d+)?\s*,\s*-?\d+(\.\d+)?\s*$. Example: `min_lon,min_lat,max_lon,max_lat`
- `closed_only` (boolean): closed_only Example: `false`
- `display_name` (string): Only changesets by this OSM user. Example: `<display_name>`
- `limit` (number): limit Example: `20`

## 4. Request through your preferred interface

### JavaScript

```javascript
const result = await firecrawl.scrape({
  alexandria: {
    provider: "openstreetmap-org",
    capability: "places/changesets",
    options: {
      bbox: "-51.2320,-30.0340,-51.2290,-30.0315",
      closed_only: true,
      limit: 3,
    },
  },
});
```

### Python

```python
result = firecrawl.scrape_alexandria({
  "provider": "openstreetmap-org",
  "capability": "places/changesets",
  "options": {
    "bbox": "-51.2320,-30.0340,-51.2290,-30.0315",
    "closed_only": True,
    "limit": 3
  }
})
```

### cURL

```sh
curl https://api.firecrawl.dev/v2/scrape \
  -H "Authorization: Bearer $FIRECRAWL_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "alexandria": {
    "provider": "openstreetmap-org",
    "capability": "places/changesets",
    "options": {
      "bbox": "-51.2320,-30.0340,-51.2290,-30.0315",
      "closed_only": true,
      "limit": 3
    }
  }
}'
```

### CLI

```sh
firecrawl scrape 'openstreetmap-org/places/changesets' \
  --options '{"bbox":"-51.2320,-30.0340,-51.2290,-30.0315","closed_only":true,"limit":3}'
```


### MCP

Call the FCX MCP retrieve tool with this object:

```json
{
  "provider": "openstreetmap-org",
  "capability": "places/changesets",
  "options": {
    "bbox": "-51.2320,-30.0340,-51.2290,-30.0315",
    "closed_only": true,
    "limit": 3
  }
}
```

Ask for only the returned fields needed by the task.

## 5. Full request shape

```json
{
  "provider": "openstreetmap-org",
  "capability": "places/changesets",
  "options": {
    "bbox": "-51.2320,-30.0340,-51.2290,-30.0315",
    "closed_only": true,
    "limit": 3
  }
}
```

## 6. Response data

The response includes `success`, `provider`, `capability`, `creditsCost` and `data`. This example shows the provider payload in `data`:

```json
{
  "changesets": [
    {
      "bounds": {
        "max_lat": 50.5238314,
        "max_lon": 4.9503214,
        "min_lat": -32.9240339,
        "min_lon": -60.7119839
      },
      "changes_count": 35,
      "closed_at": "2026-09-22T11:46:51Z",
      "comments_count": 1,
      "created_at": "2026-09-22T11:46:51Z",
      "created_count": 33,
      "deleted_count": 0,
      "id": 189395102,
      "modified_count": 2,
      "open": false,
      "tags": {
        "changesets_count": "9",
        "comment": "#hotosm-project-61518 #UNMappers_Ambassador #UNMappers #Rosario",
        "created_by": "iD 2.41.2",
        "hashtags": "#hotosm-project-61518;#UNMappers_Ambassador;#UNMappers;#Rosario;#ipc",
        "host": "https://tasks.hotosm.org/projects/61518/map/",
        "imagery_used": "Bing Maps Aerial;unknown.geojson",
        "locale": "fr",
        "review_requested": "yes"
      },
      "uid": 23949729,
      "url": "https://www.openstreetmap.org/changeset/189395102",
      "user": "FreDorian-3"
    },
    {
      "bounds": {
        "max_lat": -29.9771097,
        "max_lon": -51.0897954,
        "min_lat": -30.2124576,
        "min_lon": -51.2571841
      },
      "changes_count": 304,
      "closed_at": "2026-09-22T02:41:28Z",
      "comments_count": 0,
      "created_at": "2026-09-22T02:41:23Z",
      "created_count": 60,
      "deleted_count": 0,
      "id": 189376102,
      "modified_count": 244,
      "open": false,
      "tags": {
        "comment": "Rotas de táxi-lotação convertidas para o padrão PTv2",
        "created_by": "JOSM/1.5 (19369 Debian en_GB)",
        "source": "Knowledge"
      },
      "uid": 401472,
      "url": "https://www.openstreetmap.org/changeset/189376102",
      "user": "ftrebien"
    },
    {
      "bounds": {
        "max_lat": 28.0549655,
        "max_lon": -16.7234597,
        "min_lat": -34.8870353,
        "min_lon": -78.543388
      },
      "changes_count": 323,
      "closed_at": "2026-09-21T06:31:09Z",
      "comments_count": 0,
      "created_at": "2026-09-21T03:36:38Z",
      "created_count": 0,
      "deleted_count": 0,
      "id": 189325440,
      "modified_count": 323,
      "open": false,
      "tags": {
        "StreetComplete:quest_type": "AddRoofShape",
        "comment": "Specify roof shapes",
        "created_by": "StreetComplete_ee 63.4",
        "locale": "de-DE",
        "source": "survey"
      },
      "uid": 173981,
      "url": "https://www.openstreetmap.org/changeset/189325440",
      "user": "biketeur"
    }
  ],
  "count": 3,
  "observed_at_ms": 1790759386798,
  "source_url": "https://www.openstreetmap.org/api/0.6/changesets.json?bbox=-51.232%2C-30.034%2C-51.229%2C-30.0315&closed=true&limit=3"
}
```

## API reference-derived contract

The following capability contract is generated from the same normalized Alexandria API reference exposed in the API spec.

### Changesets

- Capability: `places/changesets`
- Description: Recent changesets from the OSM API v0.6 (`GET /api/0.6/changesets.json`), newest first, filtered by bounding box and/or editor display name, optionally closed ones only. Each changeset carries its counts, bbox and tags (comment, created_by, source).
- Instructions: See who edited an area recently and with which tools; auditing a local copy.
- Cost: 5 credits per call
- Capability file: [Changesets](https://firecrawl.dev/alexandria/agents/providers/openstreetmap-org/places/changesets)

Accepted options:
- `bbox` (string): Bounding box `min_lon,min_lat,max_lon,max_lat` (left,bottom,right,top) in WGS84 decimal degrees, the OSM API convention. Pattern: ^\s*-?\d+(\.\d+)?\s*,\s*-?\d+(\.\d+)?\s*,\s*-?\d+(\.\d+)?\s*,\s*-?\d+(\.\d+)?\s*$. Example: `min_lon,min_lat,max_lon,max_lat`
- `closed_only` (boolean): closed_only Example: `false`
- `display_name` (string): Only changesets by this OSM user. Example: `<display_name>`
- `limit` (number): limit Example: `20`

Response schema example:
```json
{
  "changesets": [
    {
      "bounds": {
        "max_lat": 50.5238314,
        "max_lon": 4.9503214,
        "min_lat": -32.9240339,
        "min_lon": -60.7119839
      },
      "changes_count": 35,
      "closed_at": "2026-09-22T11:46:51Z",
      "comments_count": 1,
      "created_at": "2026-09-22T11:46:51Z",
      "created_count": 33,
      "deleted_count": 0,
      "id": 189395102,
      "modified_count": 2,
      "open": false,
      "tags": {
        "changesets_count": "9",
        "comment": "#hotosm-project-61518 #UNMappers_Ambassador #UNMappers #Rosario",
        "created_by": "iD 2.41.2",
        "hashtags": "#hotosm-project-61518;#UNMappers_Ambassador;#UNMappers;#Rosario;#ipc",
        "host": "https://tasks.hotosm.org/projects/61518/map/",
        "imagery_used": "Bing Maps Aerial;unknown.geojson",
        "locale": "fr",
        "review_requested": "yes"
      },
      "uid": 23949729,
      "url": "https://www.openstreetmap.org/changeset/189395102",
      "user": "FreDorian-3"
    },
    {
      "bounds": {
        "max_lat": -29.9771097,
        "max_lon": -51.0897954,
        "min_lat": -30.2124576,
        "min_lon": -51.2571841
      },
      "changes_count": 304,
      "closed_at": "2026-09-22T02:41:28Z",
      "comments_count": 0,
      "created_at": "2026-09-22T02:41:23Z",
      "created_count": 60,
      "deleted_count": 0,
      "id": 189376102,
      "modified_count": 244,
      "open": false,
      "tags": {
        "comment": "Rotas de táxi-lotação convertidas para o padrão PTv2",
        "created_by": "JOSM/1.5 (19369 Debian en_GB)",
        "source": "Knowledge"
      },
      "uid": 401472,
      "url": "https://www.openstreetmap.org/changeset/189376102",
      "user": "ftrebien"
    },
    {
      "bounds": {
        "max_lat": 28.0549655,
        "max_lon": -16.7234597,
        "min_lat": -34.8870353,
        "min_lon": -78.543388
      },
      "changes_count": 323,
      "closed_at": "2026-09-21T06:31:09Z",
      "comments_count": 0,
      "created_at": "2026-09-21T03:36:38Z",
      "created_count": 0,
      "deleted_count": 0,
      "id": 189325440,
      "modified_count": 323,
      "open": false,
      "tags": {
        "StreetComplete:quest_type": "AddRoofShape",
        "comment": "Specify roof shapes",
        "created_by": "StreetComplete_ee 63.4",
        "locale": "de-DE",
        "source": "survey"
      },
      "uid": 173981,
      "url": "https://www.openstreetmap.org/changeset/189325440",
      "user": "biketeur"
    }
  ],
  "count": 3,
  "observed_at_ms": 1790759386798,
  "source_url": "https://www.openstreetmap.org/api/0.6/changesets.json?bbox=-51.232%2C-30.034%2C-51.229%2C-30.0315&closed=true&limit=3"
}
```

### Element history

- Capability: `places/element_history`
- Description: Every version of one OSM element from the OSM API v0.6 (`GET /api/0.6/{type}/{id}/history.json`), oldest first, with tags, coordinates, changeset and editor per version (deleted versions carry `visible: false`).
- Instructions: Audit how an element changed over time, or find who last edited it.
- Cost: 5 credits per call
- Capability file: [Element history](https://firecrawl.dev/alexandria/agents/providers/openstreetmap-org/places/element_history)

Accepted options:
- `id` (number, required): Numeric OSM element id. Example: `10`
- `type` (string, required): OSM element type. Example: `node`

Response schema example:
```json
{
  "id": 2374897015,
  "observed_at_ms": 1790759292501,
  "source_url": "https://www.openstreetmap.org/api/0.6/node/2374897015/history.json",
  "type": "node",
  "url": "https://www.openstreetmap.org/node/2374897015",
  "version_count": 3,
  "versions": [
    {
      "changeset": 16834975,
      "id": 2374897015,
      "lat": 0.0348892,
      "lon": 6.5322101,
      "members": null,
      "nodes": null,
      "tags": {
        "name": "Porto Alegre",
        "place": "village"
      },
      "timestamp": "2013-07-05T11:49:52Z",
      "type": "node",
      "uid": 1224430,
      "url": "https://www.openstreetmap.org/node/2374897015",
      "user": "Vintagejhan",
      "version": 1,
      "visible": true
    },
    {
      "changeset": 16869690,
      "id": 2374897015,
      "lat": 0.0343796,
      "lon": 6.5352131,
      "members": null,
      "nodes": null,
      "tags": {
        "name": "Porto Alegre",
        "place": "village"
      },
      "timestamp": "2013-07-08T07:49:31Z",
      "type": "node",
      "uid": 1224430,
      "url": "https://www.openstreetmap.org/node/2374897015",
      "user": "Vintagejhan",
      "version": 2,
      "visible": true
    },
    {
      "changeset": 63513430,
      "id": 2374897015,
      "lat": 0.0343796,
      "lon": 6.5352131,
      "members": null,
      "nodes": null,
      "tags": {
        "name": "Porto Alegre",
        "place": "village",
        "wikidata": "Q7483248"
      },
      "timestamp": "2018-10-14T16:22:48Z",
      "type": "node",
      "uid": 1772368,
      "url": "https://www.openstreetmap.org/node/2374897015",
      "user": "pizzaiolo",
      "version": 3,
      "visible": true
    }
  ]
}
```

### Geocode

- Capability: `places/geocode`
- Description: Geocode a free-text query (`query`) or a structured address (`street`, `city`, `county`, `state`, `country`, `postalcode`) with Nominatim (`GET nominatim.openstreetmap.org/search`, format jsonv2, addressdetails and extratags on). Returns places with their OSM type and id, coordinates, category/type, address breakdown and bounding box; with `polygon: true` also the boundary GeoJSON, so a city or neighbourhood polygon can feed `search_elements`. Continues with `continuation` (Nominatim `exclude_place_ids`).
- Instructions: Start here to turn a place name (city, neighbourhood, street, POI) into OSM ids, coordinates, a bbox or a boundary polygon.
- Cost: 5 credits per call
- Capability file: [Geocode](https://firecrawl.dev/alexandria/agents/providers/openstreetmap-org/places/geocode)

Accepted options:
- `city` (string): city Example: `<city>`
- `continuation` (string): Opaque continuation from a previous page (the excluded place ids). Example: `<continuation>`
- `country` (string): country Example: `<country>`
- `country_codes` (string[]): Restrict results to these ISO 3166-1 alpha-2 countries. Example: `[]`
- `county` (string): county Example: `<county>`
- `language` (string): BCP-47 language for names (`accept-language`), e.g. `pt-BR`; the source default (English) when omitted. Example: `accept-language`
- `limit` (number): Results per page (Nominatim caps at 40). Example: `10`
- `polygon` (boolean): Include the place geometry as GeoJSON (`polygon_geojson=1`). Example: `false`
- `postalcode` (string): postalcode Example: `<postalcode>`
- `query` (string): Free-text query, e.g. `Moinhos de Vento, Porto Alegre`. Mutually exclusive with the structured fields. Example: `Moinhos de Vento, Porto Alegre`
- `state` (string): state Example: `<state>`
- `street` (string): `<housenumber> <streetname>` (structured query). Example: `<housenumber> <streetname>`

Response schema example:
```json
{
  "continuation": "422185778,8356226,8372281",
  "count": 3,
  "observed_at_ms": 1790759144906,
  "query": "Porto Alegre",
  "results": [
    {
      "address": {
        "ISO3166-2-lvl4": "BR-RS",
        "city": "Porto Alegre",
        "country": "Brazil",
        "country_code": "br",
        "municipality": "Porto Alegre",
        "region": "South Region",
        "state": "Rio Grande do Sul"
      },
      "addresstype": "city",
      "boundingbox": {
        "east": -51.0188522,
        "north": -29.9324744,
        "south": -30.2694499,
        "west": -51.3034404
      },
      "category": "boundary",
      "display_name": "Porto Alegre, Rio Grande do Sul, South Region, Brazil",
      "extratags": {
        "IBGE:GEOCODIGO": "431490205",
        "admin_level": "9",
        "capital": "4",
        "ele": "10",
        "flag": "http://upload.wikimedia.org/wikipedia/commons/3/39/Bandeira_de_Porto_Alegre_%28RS%29.svg",
        "linked_place": "city",
        "population": "1332845",
        "population:date": "2022",
        "ref:LOCODE": "BRPOA",
        "state_capital": "yes",
        "website": "http://www.portoalegre.rs.gov.br/",
        "wikidata": "Q40269",
        "wikipedia": "pt:Porto Alegre"
      },
      "geojson": null,
      "importance": 0.6801365745834766,
      "lat": -30.0324999,
      "lon": -51.2303767,
      "name": "Porto Alegre",
      "osm_id": 20676578,
      "osm_type": "relation",
      "place_id": 422185778,
      "place_rank": 18,
      "type": "administrative",
      "url": "https://www.openstreetmap.org/relation/20676578"
    },
    {
      "address": {
        "ISO3166-2-lvl4": "BR-RS",
        "country": "Brazil",
        "country_code": "br",
        "municipality": "Porto Alegre",
        "region": "South Region",
        "state": "Rio Grande do Sul"
      },
      "addresstype": "municipality",
      "boundingbox": {
        "east": -51.0188522,
        "north": -29.9324744,
        "south": -30.2694499,
        "west": -51.3034404
      },
      "category": "boundary",
      "display_name": "Porto Alegre, Rio Grande do Sul, South Region, Brazil",
      "extratags": {
        "IBGE:GEOCODIGO": "4314902",
        "admin_level": "8",
        "flag": "http://upload.wikimedia.org/wikipedia/commons/3/39/Bandeira_de_Porto_Alegre_%28RS%29.svg",
        "population": "1332833",
        "population:date": "2023-08-31",
        "state_capital": "yes",
        "website": "http://www.portoalegre.rs.gov.br/",
        "wikidata": "Q40269",
        "wikipedia": "pt:Porto Alegre"
      },
      "geojson": null,
      "importance": 0.6801365745834766,
      "lat": -30.1009166,
      "lon": -51.1887882,
      "name": "Porto Alegre",
      "osm_id": 242397,
      "osm_type": "relation",
      "place_id": 8356226,
      "place_rank": 16,
      "type": "administrative",
      "url": "https://www.openstreetmap.org/relation/242397"
    },
    {
      "address": {
        "ISO3166-2-lvl4": "BR-RS",
        "administrative": "Porto Alegre",
        "country": "Brazil",
        "country_code": "br",
        "region": "South Region",
        "state": "Rio Grande do Sul"
      },
      "addresstype": "administrative",
      "boundingbox": {
        "east": -51.0188522,
        "north": -29.9324744,
        "south": -30.2694499,
        "west": -51.3034404
      },
      "category": "boundary",
      "display_name": "Porto Alegre, Rio Grande do Sul, South Region, Brazil",
      "extratags": {
        "IBGE:GEOCODIGO": "431490205",
        "admin_level": "7",
        "description": "Distrito-sede",
        "district:type": "municipal_seat",
        "population": "1409351"
      },
      "geojson": null,
      "importance": 0.2134066552224002,
      "lat": -30.1009166,
      "lon": -51.1887882,
      "name": "Porto Alegre",
      "osm_id": 7021674,
      "osm_type": "relation",
      "place_id": 8372281,
      "place_rank": 14,
      "type": "administrative",
      "url": "https://www.openstreetmap.org/relation/7021674"
    }
  ],
  "source_url": "https://nominatim.openstreetmap.org/search?format=jsonv2&addressdetails=1&extratags=1&limit=3&q=Porto+Alegre&countrycodes=br",
  "structured": null
}
```

### Get element

- Capability: `places/get_element`
- Description: Fetch one OSM element by type and id from the OSM API v0.6 (`GET www.openstreetmap.org/api/0.6/{type}/{id}.json`): version, timestamp, changeset, editor, tags, node coordinates, way node ids or relation members. With `full: true` on a way or relation (`/full.json`) the referenced nodes (and member ways) come back in `related`, so the geometry can be rebuilt.
- Instructions: Detail for an id returned by `search_elements`, `geocode` or `map_bbox`; `full` for a way or boundary geometry.
- Cost: 5 credits per call
- Capability file: [Get element](https://firecrawl.dev/alexandria/agents/providers/openstreetmap-org/places/get_element)

Accepted options:
- `full` (boolean): Also return the nodes of a way, or the nodes and ways of a relation. Not allowed for nodes. Example: `false`
- `id` (number, required): Numeric OSM element id. Example: `10`
- `type` (string, required): OSM element type. Example: `node`

Response schema example:
```json
{
  "element": {
    "changeset": 70400307,
    "id": 203585141,
    "lat": null,
    "lon": null,
    "members": null,
    "nodes": [
      2912911308,
      3229844650,
      4017019814,
      3229844654,
      3233075443,
      4017019813,
      2912911308
    ],
    "tags": {
      "leisure": "park",
      "loc_name": "Praça da Matriz",
      "name": "Praça Marechal Deodoro",
      "note": "Nome da praça conforme as placas no local e a lei. Apelidos devem ir em loc_name.",
      "old_name": "Praça Dom Pedro II",
      "source": "LABGEO/UFRGS",
      "source:name": "survey",
      "wikidata": "Q10353329",
      "wikipedia": "pt:Praça Marechal Deodoro (Porto Alegre)"
    },
    "timestamp": "2019-05-19T03:02:15Z",
    "type": "way",
    "uid": 1772368,
    "url": "https://www.openstreetmap.org/way/203585141",
    "user": "pizzaiolo",
    "version": 17,
    "visible": true
  },
  "observed_at_ms": 1790759214582,
  "related": [
    {
      "changeset": 27400189,
      "id": 2912911308,
      "lat": -30.0332424,
      "lon": -51.2305987,
      "members": null,
      "nodes": null,
      "tags": {},
      "timestamp": "2014-12-11T15:07:45Z",
      "type": "node",
      "uid": 1852029,
      "url": "https://www.openstreetmap.org/node/2912911308",
      "user": "smaprs",
      "version": 3,
      "visible": true
    },
    {
      "changeset": 27442595,
      "id": 3229844650,
      "lat": -30.0333074,
      "lon": -51.2297312,
      "members": null,
      "nodes": null,
      "tags": {},
      "timestamp": "2014-12-13T13:29:42Z",
      "type": "node",
      "uid": 1852029,
      "url": "https://www.openstreetmap.org/node/3229844650",
      "user": "smaprs",
      "version": 2,
      "visible": true
    },
    {
      "changeset": 27442595,
      "id": 3229844654,
      "lat": -30.0324644,
      "lon": -51.2296469,
      "members": null,
      "nodes": null,
      "tags": {},
      "timestamp": "2014-12-13T13:29:42Z",
      "type": "node",
      "uid": 1852029,
      "url": "https://www.openstreetmap.org/node/3229844654",
      "user": "smaprs",
      "version": 2,
      "visible": true
    },
    {
      "changeset": 27442595,
      "id": 3233075443,
      "lat": -30.0323992,
      "lon": -51.230516,
      "members": null,
      "nodes": null,
      "tags": {},
      "timestamp": "2014-12-13T13:29:40Z",
      "type": "node",
      "uid": 1852029,
      "url": "https://www.openstreetmap.org/node/3233075443",
      "user": "smaprs",
      "version": 1,
      "visible": true
    },
    {
      "changeset": 37335285,
      "id": 4017019813,
      "lat": -30.0328215,
      "lon": -51.2305574,
      "members": null,
      "nodes": null,
      "tags": {},
      "timestamp": "2016-02-20T20:28:55Z",
      "type": "node",
      "uid": 401472,
      "url": "https://www.openstreetmap.org/node/4017019813",
      "user": "ftrebien",
      "version": 1,
      "visible": true
    },
    {
      "changeset": 37335285,
      "id": 4017019814,
      "lat": -30.0328892,
      "lon": -51.2296894,
      "members": null,
      "nodes": null,
      "tags": {},
      "timestamp": "2016-02-20T20:28:55Z",
      "type": "node",
      "uid": 401472,
      "url": "https://www.openstreetmap.org/node/4017019814",
      "user": "ftrebien",
      "version": 1,
      "visible": true
    }
  ],
  "source_url": "https://www.openstreetmap.org/api/0.6/way/203585141/full.json"
}
```

### Get elements

- Capability: `places/get_elements`
- Description: Fetch up to 100 elements of one type in a single OSM API v0.6 multi-fetch (`GET /api/0.6/nodes.json?nodes=...`, `ways.json`, `relations.json`). Deleted elements come back with `visible: false`; an id that never existed makes the source answer 404 for the whole batch (`not_found`).
- Instructions: Refresh or deduplicate a batch of known ids (e.g. from a local database) in one call.
- Cost: 5 credits per call
- Capability file: [Get elements](https://firecrawl.dev/alexandria/agents/providers/openstreetmap-org/places/get_elements)

Accepted options:
- `ids` (number[], required): 1 to 100 ids of that type. Example: `[]`
- `type` (string, required): OSM element type. Example: `node`

Response schema example:
```json
{
  "count": 2,
  "elements": [
    {
      "changeset": 189214850,
      "id": 313557783,
      "lat": -30.0324999,
      "lon": -51.2303767,
      "members": null,
      "nodes": null,
      "tags": {
        "capital": "4",
        "ele": "10",
        "flag": "http://upload.wikimedia.org/wikipedia/commons/3/39/Bandeira_de_Porto_Alegre_%28RS%29.svg",
        "loc_name": "PoA",
        "name": "Porto Alegre",
        "name:ar": "بورتو أليغري",
        "name:be": "Порту-Алегры",
        "name:bg": "Порто Алегри",
        "name:ce": "Порту-Алегри",
        "name:de": "Porto Alegre",
        "name:el": "Πόρτο Αλέγκρε",
        "name:en": "Porto Alegre",
        "name:eo": "Porto-Alegro",
        "name:es": "Porto Alegre",
        "name:fa": "پورتو الگره",
        "name:fr": "Porto Alegre",
        "name:he": "פורטו אלגרה",
        "name:hy": "Պորտու Ալեգրի",
        "name:it": "Porto Alegre",
        "name:ja": "ポルト・アレグレ",
        "name:ka": "პორტუ-ალეგრი",
        "name:kk": "Порту-Алегри",
        "name:kn": "ಪೋರ್ಟೊ ಅಲೆಗ್ರೇ",
        "name:ko": "포르투알레그리",
        "name:la": "Portus Alacer",
        "name:lt": "Porto Alegrė",
        "name:lv": "Portualegri",
        "name:mk": "Порто Алегре",
        "name:mn": "Порту-Алегри",
        "name:mr": "पोर्तू अलेग्री",
        "name:nl": "Porto Alegre",
        "name:no": "Porto Alegre",
        "name:oc": "Pôrto Alegre",
        "name:os": "Порту-Алегри",
        "name:pl": "Porto Alegre",
        "name:pt": "Porto Alegre",
        "name:ru": "Порту-Алегри",
        "name:sr": "Порто Алегре",
        "name:sv": "Porto Alegre",
        "name:tg": "Порту-Алегре",
        "name:th": "ปรอโตอเลกรี",
        "name:tr": "Porto Alegre",
        "name:uk": "Порту-Алегрі",
        "name:ur": "پورتو الیگرے",
        "name:uz": "Portu-Alegri",
        "name:zh": "阿雷格里港",
        "note": "Oficialmente em frente aos prédios do governo estadual.",
        "place": "city",
        "population": "1332833",
        "population:date": "2023-08-31",
        "ref:LOCODE": "BRPOA",
        "source:name:oc": "Lo Congrès",
        "source:population": "IBGE, DOU de 31/08/2023",
        "state_capital": "yes",
        "website": "http://www.portoalegre.rs.gov.br/",
        "wikidata": "Q40269",
        "wikipedia": "pt:Porto Alegre"
      },
      "timestamp": "2026-09-18T15:25:50Z",
      "type": "node",
      "uid": 4809811,
      "url": "https://www.openstreetmap.org/node/313557783",
      "user": "Yuri Matias",
      "version": 74,
      "visible": true
    },
    {
      "changeset": 63513430,
      "id": 2374897015,
      "lat": 0.0343796,
      "lon": 6.5352131,
      "members": null,
      "nodes": null,
      "tags": {
        "name": "Porto Alegre",
        "place": "village",
        "wikidata": "Q7483248"
      },
      "timestamp": "2018-10-14T16:22:48Z",
      "type": "node",
      "uid": 1772368,
      "url": "https://www.openstreetmap.org/node/2374897015",
      "user": "pizzaiolo",
      "version": 3,
      "visible": true
    }
  ],
  "observed_at_ms": 1790759238332,
  "source_url": "https://www.openstreetmap.org/api/0.6/nodes.json?nodes=313557783%2C2374897015",
  "type": "node"
}
```

### Map bbox

- Capability: `places/map_bbox`
- Description: Download every element in a small bounding box from the OSM API v0.6 (`GET /api/0.6/map.json?bbox=`): all nodes inside, the ways that reference them (with their nodes) and the relations that reference those. Source limits: area at most 0.25 square degrees and at most 50 000 nodes, otherwise the source rejects the request (`invalid_input`). `include_untagged: false` drops nodes without tags from the output (way geometry nodes) to keep it small.
- Instructions: A complete dump of a block or plaza for a local database; for category queries over a larger area use `search_elements`.
- Cost: 5 credits per call
- Capability file: [Map bbox](https://firecrawl.dev/alexandria/agents/providers/openstreetmap-org/places/map_bbox)

Accepted options:
- `bbox` (string, required): Bounding box `min_lon,min_lat,max_lon,max_lat` (left,bottom,right,top) in WGS84 decimal degrees, the OSM API convention. Pattern: ^\s*-?\d+(\.\d+)?\s*,\s*-?\d+(\.\d+)?\s*,\s*-?\d+(\.\d+)?\s*,\s*-?\d+(\.\d+)?\s*$. Example: `min_lon,min_lat,max_lon,max_lat`
- `include_untagged` (boolean): Keep untagged nodes (mostly way vertices) in `elements`. Example: `false`

Response schema example:
```json
{
  "bounds": {
    "max_lat": -30.0329,
    "max_lon": -51.2301,
    "min_lat": -30.0333,
    "min_lon": -51.2306
  },
  "count": 10,
  "elements": [
    {
      "changeset": 40770387,
      "id": 4305250709,
      "lat": -30.0330436,
      "lon": -51.2304791,
      "members": null,
      "nodes": null,
      "tags": {
        "natural": "tree"
      },
      "timestamp": "2016-07-15T23:05:16Z",
      "type": "node",
      "uid": 1852029,
      "url": "https://www.openstreetmap.org/node/4305250709",
      "user": "smaprs",
      "version": 1,
      "visible": true
    },
    {
      "changeset": 40770387,
      "id": 4305250710,
      "lat": -30.0331529,
      "lon": -51.2303428,
      "members": null,
      "nodes": null,
      "tags": {
        "natural": "tree"
      },
      "timestamp": "2016-07-15T23:05:16Z",
      "type": "node",
      "uid": 1852029,
      "url": "https://www.openstreetmap.org/node/4305250710",
      "user": "smaprs",
      "version": 1,
      "visible": true
    },
    {
      "changeset": 70400307,
      "id": 203585141,
      "lat": null,
      "lon": null,
      "members": null,
      "nodes": [
        2912911308,
        3229844650,
        4017019814,
        3229844654,
        3233075443,
        4017019813,
        2912911308
      ],
      "tags": {
        "leisure": "park",
        "loc_name": "Praça da Matriz",
        "name": "Praça Marechal Deodoro",
        "note": "Nome da praça conforme as placas no local e a lei. Apelidos devem ir em loc_name.",
        "old_name": "Praça Dom Pedro II",
        "source": "LABGEO/UFRGS",
        "source:name": "survey",
        "wikidata": "Q10353329",
        "wikipedia": "pt:Praça Marechal Deodoro (Porto Alegre)"
      },
      "timestamp": "2019-05-19T03:02:15Z",
      "type": "way",
      "uid": 1772368,
      "url": "https://www.openstreetmap.org/way/203585141",
      "user": "pizzaiolo",
      "version": 17,
      "visible": true
    },
    {
      "changeset": 16461839,
      "id": 218821142,
      "lat": null,
      "lon": null,
      "members": null,
      "nodes": [
        2280321859,
        2280321860,
        2280321856,
        2280321855,
        2280321859
      ],
      "tags": {
        "artist_name": "Vasco Prado",
        "historic": "monument",
        "name": "Monumento a Tiradentes",
        "start_date": "1976"
      },
      "timestamp": "2013-06-07T20:08:20Z",
      "type": "way",
      "uid": 401472,
      "url": "https://www.openstreetmap.org/way/218821142",
      "user": "ftrebien",
      "version": 5,
      "visible": true
    },
    {
      "changeset": 27512394,
      "id": 316802332,
      "lat": null,
      "lon": null,
      "members": null,
      "nodes": [
        3229830092,
        3229844659,
        3229830093,
        3229844660,
        3229846062,
        3233076889,
        3233076891,
        3229846064,
        3229846067,
        3229830096,
        3229846065,
        3229846063,
        3233076890,
        3233076888,
        3229830092
      ],
      "tags": {
        "leisure": "playground"
      },
      "timestamp": "2014-12-16T17:42:25Z",
      "type": "way",
      "uid": 463504,
      "url": "https://www.openstreetmap.org/way/316802332",
      "user": "erickdeoliveiraleal",
      "version": 4,
      "visible": true
    },
    {
      "changeset": 32217176,
      "id": 316804584,
      "lat": null,
      "lon": null,
      "members": null,
      "nodes": [
        2912911308,
        3618664317,
        3229854205,
        3229854206,
        3618664320,
        3229844650,
        2912911308
      ],
      "tags": {
        "access": "private",
        "amenity": "parking",
        "capacity": "40",
        "lit": "yes",
        "name": "Largo da Legalidade",
        "parking": "surface",
        "source": "Lei Municipal 6952 /1991",
        "supervised": "no",
        "surface": "asphalt",
        "website": "http://www2.portoalegre.rs.gov.br/netahtml/sirel/atos/Lei%206952"
      },
      "timestamp": "2015-06-26T03:01:30Z",
      "type": "way",
      "uid": 401472,
      "url": "https://www.openstreetmap.org/way/316804584",
      "user": "ftrebien",
      "version": 5,
      "visible": true
    },
    {
      "changeset": 27442595,
      "id": 317086210,
      "lat": null,
      "lon": null,
      "members": null,
      "nodes": [
        3233075431,
        3233076885,
        3233076886,
        3229844633,
        3233075432,
        3233076895,
        3233076880,
        3233075431
      ],
      "tags": {
        "barrier": "fence",
        "leisure": "garden"
      },
      "timestamp": "2014-12-13T13:29:41Z",
      "type": "way",
      "uid": 1852029,
      "url": "https://www.openstreetmap.org/way/317086210",
      "user": "smaprs",
      "version": 1,
      "visible": true
    },
    {
      "changeset": 27442595,
      "id": 317086214,
      "lat": null,
      "lon": null,
      "members": null,
      "nodes": [
        3229844636,
        3233076894,
        3230690752,
        3229844637,
        3233076901,
        3233075439,
        3233076899,
        3233075440,
        3233076898,
        3233076881,
        3229844636
      ],
      "tags": {
        "barrier": "fence",
        "leisure": "garden"
      },
      "timestamp": "2014-12-13T13:29:41Z",
      "type": "way",
      "uid": 1852029,
      "url": "https://www.openstreetmap.org/way/317086214",
      "user": "smaprs",
      "version": 1,
      "visible": true
    },
    {
      "changeset": 27442595,
      "id": 317086215,
      "lat": null,
      "lon": null,
      "members": null,
      "nodes": [
        3229844640,
        3230690753,
        3233076893,
        3229844641,
        3233076882,
        3233076897,
        3233075441,
        3233076900,
        3233075442,
        3233076902,
        3229844640
      ],
      "tags": {
        "barrier": "fence",
        "leisure": "garden"
      },
      "timestamp": "2014-12-13T13:29:41Z",
      "type": "way",
      "uid": 1852029,
      "url": "https://www.openstreetmap.org/way/317086215",
      "user": "smaprs",
      "version": 1,
      "visible": true
    },
    {
      "changeset": 99093408,
      "id": 356398019,
      "lat": null,
      "lon": null,
      "members": null,
      "nodes": [
        3618664321,
        8414395638,
        8414395639,
        3618664316
      ],
      "tags": {
        "access": "yes",
        "highway": "service",
        "name": "Rua Duque de Caxias",
        "oneway": "yes",
        "service": "driveway",
        "surface": "asphalt"
      },
      "timestamp": "2021-02-11T09:10:49Z",
      "type": "way",
      "uid": 10074489,
      "url": "https://www.openstreetmap.org/way/356398019",
      "user": "Vedauwoo",
      "version": 4,
      "visible": true
    }
  ],
  "node_count": 61,
  "observed_at_ms": 1790759267160,
  "relation_count": 0,
  "source_url": "https://www.openstreetmap.org/api/0.6/map.json?bbox=-51.2306%2C-30.0333%2C-51.2301%2C-30.0329",
  "way_count": 8
}
```

### Notes

- Capability: `places/notes`
- Description: Map notes (user-reported problems) in a bounding box from the OSM API v0.6 (`GET /api/0.6/notes.json?bbox=`): position, status, creation date and the comment thread. `closed_days` controls how long ago a closed note may have been closed to still appear (0 = open notes only, -1 = all). Source limit: bbox area at most 25 square degrees.
- Instructions: Find open data-quality reports in an area before or after importing it.
- Cost: 5 credits per call
- Capability file: [Notes](https://firecrawl.dev/alexandria/agents/providers/openstreetmap-org/places/notes)

Accepted options:
- `bbox` (string, required): Bounding box `min_lon,min_lat,max_lon,max_lat` (left,bottom,right,top) in WGS84 decimal degrees, the OSM API convention. Pattern: ^\s*-?\d+(\.\d+)?\s*,\s*-?\d+(\.\d+)?\s*,\s*-?\d+(\.\d+)?\s*,\s*-?\d+(\.\d+)?\s*$. Example: `min_lon,min_lat,max_lon,max_lat`
- `closed_days` (number): Days since closure for closed notes to be included; 0 only open notes, -1 all. Example: `7`
- `limit` (number): limit Example: `100`

Response schema example:
```json
{
  "count": 5,
  "notes": [
    {
      "api_url": "https://www.openstreetmap.org/api/0.6/notes/5005694.json",
      "comments": [
        {
          "action": "opened",
          "date": "2025-10-14 12:51:41 UTC",
          "text": "THEATRO SÃO PEDRO\n",
          "uid": null,
          "user": null,
          "user_url": null
        },
        {
          "action": "closed",
          "date": "2026-05-01 13:34:28 UTC",
          "text": "Já no mapa",
          "uid": 3984659,
          "user": "DressyPear4",
          "user_url": "https://www.openstreetmap.org/user/DressyPear4"
        }
      ],
      "date_closed": "2026-05-01 13:34:27 UTC",
      "date_created": "2025-10-14 12:51:41 UTC",
      "id": 5005694,
      "lat": -30.0319076,
      "lon": -51.2303826,
      "status": "closed",
      "url": "https://www.openstreetmap.org/note/5005694"
    },
    {
      "api_url": "https://www.openstreetmap.org/api/0.6/notes/2984959.json",
      "comments": [
        {
          "action": "opened",
          "date": "2021-12-27 13:37:59 UTC",
          "text": "Palacio piratini",
          "uid": null,
          "user": null,
          "user_url": null
        },
        {
          "action": "closed",
          "date": "2022-11-24 12:36:26 UTC",
          "text": "",
          "uid": 17779509,
          "user": "Luigi MP",
          "user_url": "https://www.openstreetmap.org/user/Luigi%20MP"
        },
        {
          "action": "reopened",
          "date": "2022-11-24 12:36:32 UTC",
          "text": "",
          "uid": 17779509,
          "user": "Luigi MP",
          "user_url": "https://www.openstreetmap.org/user/Luigi%20MP"
        },
        {
          "action": "closed",
          "date": "2022-11-24 13:36:50 UTC",
          "text": "Já no mapa",
          "uid": 3984659,
          "user": "DressyPear4",
          "user_url": "https://www.openstreetmap.org/user/DressyPear4"
        }
      ],
      "date_closed": "2022-11-24 13:36:50 UTC",
      "date_created": "2021-12-27 13:37:59 UTC",
      "id": 2984959,
      "lat": -30.0338208,
      "lon": -51.2306149,
      "status": "closed",
      "url": "https://www.openstreetmap.org/note/2984959"
    },
    {
      "api_url": "https://www.openstreetmap.org/api/0.6/notes/3377321.json",
      "comments": [
        {
          "action": "opened",
          "date": "2022-09-28 14:14:50 UTC",
          "text": "Antiga Provedoria Real",
          "uid": null,
          "user": null,
          "user_url": null
        }
      ],
      "date_closed": null,
      "date_created": "2022-09-28 14:14:50 UTC",
      "id": 3377321,
      "lat": -30.0338419,
      "lon": -51.2300742,
      "status": "open",
      "url": "https://www.openstreetmap.org/note/3377321"
    },
    {
      "api_url": "https://www.openstreetmap.org/api/0.6/notes/3317197.json",
      "comments": [
        {
          "action": "opened",
          "date": "2022-08-16 13:52:43 UTC",
          "text": "TEst",
          "uid": null,
          "user": null,
          "user_url": null
        },
        {
          "action": "closed",
          "date": "2022-08-16 14:27:43 UTC",
          "text": "",
          "uid": 463504,
          "user": "erickdeoliveiraleal",
          "user_url": "https://www.openstreetmap.org/user/erickdeoliveiraleal"
        }
      ],
      "date_closed": "2022-08-16 14:27:43 UTC",
      "date_created": "2022-08-16 13:52:43 UTC",
      "id": 3317197,
      "lat": -30.0324624,
      "lon": -51.2293339,
      "status": "closed",
      "url": "https://www.openstreetmap.org/note/3317197"
    },
    {
      "api_url": "https://www.openstreetmap.org/api/0.6/notes/2452395.json",
      "comments": [
        {
          "action": "opened",
          "date": "2020-12-05 03:34:14 UTC",
          "text": "Estou perdendo vendas no marketplace do facebook pois nao é possícel editar o cep e a licalizacao esta me levando para um local muito distante!",
          "uid": null,
          "user": null,
          "user_url": null
        },
        {
          "action": "closed",
          "date": "2020-12-05 07:31:14 UTC",
          "text": "This is not related to OpenStreetMap. Contact your third party app provider. ",
          "uid": 1497225,
          "user": "kartonage",
          "user_url": "https://www.openstreetmap.org/user/kartonage"
        }
      ],
      "date_closed": "2020-12-05 07:31:14 UTC",
      "date_created": "2020-12-05 03:34:14 UTC",
      "id": 2452395,
      "lat": -30.0329874,
      "lon": -51.2304497,
      "status": "closed",
      "url": "https://www.openstreetmap.org/note/2452395"
    }
  ],
  "observed_at_ms": 1790759373666,
  "source_url": "https://www.openstreetmap.org/api/0.6/notes.json?bbox=-51.232%2C-30.034%2C-51.229%2C-30.0315&limit=5&closed=-1"
}
```

### Reverse geocode

- Capability: `places/reverse_geocode`
- Description: Reverse-geocode a coordinate with Nominatim (`GET nominatim.openstreetmap.org/reverse`, jsonv2): the nearest place at the requested `zoom` (18 building, 16 street, 14 suburb, 10 city, 3 country) with its OSM type/id, address and bounding box.
- Instructions: You have a lat/lon and need the OSM object and address there.
- Cost: 5 credits per call
- Capability file: [Reverse geocode](https://firecrawl.dev/alexandria/agents/providers/openstreetmap-org/places/reverse_geocode)

Accepted options:
- `language` (string): BCP-47 language for names (`accept-language`), e.g. `pt-BR`; the source default (English) when omitted. Example: `accept-language`
- `lat` (number, required): lat Example: `10`
- `lon` (number, required): lon Example: `10`
- `zoom` (number): Level of detail, 0 (country) to 18 (building). Example: `18`

Response schema example:
```json
{
  "lat": -30.0325,
  "lon": -51.2304,
  "observed_at_ms": 1790759164651,
  "place": {
    "address": {
      "ISO3166-2-lvl4": "BR-RS",
      "country": "Brazil",
      "country_code": "br",
      "municipality": "Porto Alegre",
      "region": "South Region",
      "state": "Rio Grande do Sul"
    },
    "addresstype": "municipality",
    "boundingbox": {
      "east": -51.0188522,
      "north": -29.9324744,
      "south": -30.2694499,
      "west": -51.3034404
    },
    "category": "boundary",
    "display_name": "Porto Alegre, Rio Grande do Sul, South Region, Brazil",
    "extratags": {
      "IBGE:GEOCODIGO": "4314902",
      "admin_level": "8",
      "flag": "http://upload.wikimedia.org/wikipedia/commons/3/39/Bandeira_de_Porto_Alegre_%28RS%29.svg",
      "population": "1332833",
      "population:date": "2023-08-31",
      "state_capital": "yes",
      "website": "http://www.portoalegre.rs.gov.br/",
      "wikidata": "Q40269",
      "wikipedia": "pt:Porto Alegre"
    },
    "geojson": null,
    "importance": 0.6801365745834766,
    "lat": -30.1009166,
    "lon": -51.1887882,
    "name": "Porto Alegre",
    "osm_id": 242397,
    "osm_type": "relation",
    "place_id": 8356226,
    "place_rank": 16,
    "type": "administrative",
    "url": "https://www.openstreetmap.org/relation/242397"
  },
  "source_url": "https://nominatim.openstreetmap.org/reverse?format=jsonv2&lat=-30.0325&lon=-51.2304&zoom=10&addressdetails=1&extratags=1",
  "zoom": 10
}
```

### Search elements

- Capability: `places/search_elements`
- Description: Find OSM elements by tag inside a bounding box, a radius around a point, an administrative area (relation id) or a polygon, through the Overpass API that powers the website's Query Features tool (`POST query.openstreetmap.org/query-features`, Overpass QL `out tags center`). `tags` is a map of tag key to value; the value `*` means the key must exist. Returns typed elements (node/way/relation) with id, tags, node coordinates or way/relation centre, and the data timestamp. Overpass has no cursor: a result that reaches `limit` is marked partial; tile the area or raise `limit`.
- Instructions: Category queries: all restaurants in a bbox, pharmacies inside a municipality relation, cafes within 500 m of a point, POIs inside a neighbourhood polygon from `geocode`.
- Cost: 5 credits per call
- Capability file: [Search elements](https://firecrawl.dev/alexandria/agents/providers/openstreetmap-org/places/search_elements)

Accepted options:
- `area_relation_id` (number): OSM relation id of an administrative boundary (e.g. 242397 for Porto Alegre); mapped to Overpass area 3600000000 + id. Example: `10`
- `around` (object): Circle filter. Example: `{}`
- `bbox` (string): Bounding box `min_lon,min_lat,max_lon,max_lat` (left,bottom,right,top) in WGS84 decimal degrees, the OSM API convention. Pattern: ^\s*-?\d+(\.\d+)?\s*,\s*-?\d+(\.\d+)?\s*,\s*-?\d+(\.\d+)?\s*,\s*-?\d+(\.\d+)?\s*$. Example: `min_lon,min_lat,max_lon,max_lat`
- `limit` (number): Maximum elements (Overpass `out ... N`). Example: `100`
- `polygon` (object[]): Polygon as `[lat, lon]` pairs (at least 3), e.g. a `geocode` boundary ring. Example: `[]`
- `tags` (object, required): Tag filters, all must match: `{"amenity": "restaurant"}`; `"*"` requires the key only, e.g. `{"shop": "*"}`. Keys and values are OSM tag strings; `"` and `\` are rejected. Example: `{"amenity":"restaurant"}`
- `timeout_s` (number): Overpass `[timeout]` in seconds. Example: `25`
- `types` (string[]): Element types to return; all three when omitted. Example: `[]`

Response schema example:
```json
{
  "count": 6,
  "elements": [
    {
      "center": {
        "lat": -30.0328533,
        "lon": -51.2301228
      },
      "id": 203585141,
      "lat": null,
      "lon": null,
      "tags": {
        "leisure": "park",
        "loc_name": "Praça da Matriz",
        "name": "Praça Marechal Deodoro",
        "note": "Nome da praça conforme as placas no local e a lei. Apelidos devem ir em loc_name.",
        "old_name": "Praça Dom Pedro II",
        "source": "LABGEO/UFRGS",
        "source:name": "survey",
        "wikidata": "Q10353329",
        "wikipedia": "pt:Praça Marechal Deodoro (Porto Alegre)"
      },
      "type": "way",
      "url": "https://www.openstreetmap.org/way/203585141"
    },
    {
      "center": {
        "lat": -30.0295976,
        "lon": -51.2310546
      },
      "id": 206611684,
      "lat": null,
      "lon": null,
      "tags": {
        "addr:city": "Porto Alegre",
        "addr:housenumber": "2529",
        "addr:postcode": "90010-150",
        "addr:street": "Praça da Alfândega",
        "addr:suburb": "Centro Histórico",
        "internet_access": "wlan",
        "internet_access:fee": "no",
        "leisure": "park",
        "name": "Praça da Alfândega",
        "old_name": "Praça Senador Florêncio",
        "start_date": "1978",
        "wikipedia": "pt:Praça da Alfândega"
      },
      "type": "way",
      "url": "https://www.openstreetmap.org/way/206611684"
    },
    {
      "center": {
        "lat": -30.0348537,
        "lon": -51.2310542
      },
      "id": 217710985,
      "lat": null,
      "lon": null,
      "tags": {
        "leisure": "park",
        "name": "Praça Padre Gregório de Nadal"
      },
      "type": "way",
      "url": "https://www.openstreetmap.org/way/217710985"
    },
    {
      "center": {
        "lat": -30.0317315,
        "lon": -51.2315969
      },
      "id": 217710987,
      "lat": null,
      "lon": null,
      "tags": {
        "leisure": "park",
        "name": "Praça da Familia Imigrante"
      },
      "type": "way",
      "url": "https://www.openstreetmap.org/way/217710987"
    },
    {
      "center": {
        "lat": -30.0298822,
        "lon": -51.2308866
      },
      "id": 218818046,
      "lat": null,
      "lon": null,
      "tags": {
        "historic": "monument",
        "leisure": "park",
        "name": "Monumento ao General Osório",
        "start_date": "1933",
        "wikipedia": "pt:Monumento ao General Osório"
      },
      "type": "way",
      "url": "https://www.openstreetmap.org/way/218818046"
    },
    {
      "center": {
        "lat": -30.0300218,
        "lon": -51.2301396
      },
      "id": 244642590,
      "lat": null,
      "lon": null,
      "tags": {
        "leisure": "park",
        "name": "Largo dos Medeiros",
        "source": "LABGEO/UFRGS"
      },
      "type": "way",
      "url": "https://www.openstreetmap.org/way/244642590"
    }
  ],
  "filter": {
    "kind": "around",
    "tags": {
      "leisure": "park",
      "name": "*"
    },
    "types": [
      "way"
    ]
  },
  "observed_at_ms": 1790759193326,
  "overpass_query": "[out:json][timeout:25];(way[\"leisure\"=\"park\"][\"name\"](around:400,-30.0325,-51.2304););out tags center 10;",
  "remark": null,
  "timestamp_osm_base": "2026-09-30T09:04:04Z",
  "truncated": false
}
```
