# Geoapify

Geoapify offers a suite of APIs for integrating maps, geocoding, routing, and other location-based services into applications.

- **Category:** developer tools
- **Auth:** API_KEY
- **Composio Managed App Available?** N/A
- **Tools:** 25
- **Triggers:** 0
- **Slug:** `GEOAPIFY`
- **Version:** 20260217_00

## Tools

### Address Autocomplete

**Slug:** `GEOAPIFY_ADDRESS_AUTOCOMPLETE`

Tool to fetch address suggestions based on partial input. Use when you need to get predictive suggestions from incomplete address text.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `bias` | string | No | Bias results by proximity or boundary using formats: proximity:lon,lat\|circle:lon,lat,radius\|rect:lon1,lat1,lon2,lat2\|countrycode:CC; combine with '\|' for OR |
| `lang` | string | No | Language code (ISO 639-1, 2 letters, e.g., 'en') |
| `text` | string | Yes | Partial address text to autocomplete |
| `type` | string ("country" | "state" | "city" | "postcode" | "street" | "amenity" | "locality") | No | Restrict suggestions by location type |
| `limit` | integer | No | Maximum number of results to return, must be >= 1 |
| `filter` | string | No | Filter results by boundary or country using formats: circle:lon,lat,radius\|rect:lon1,lat1,lon2,lat2\|countrycode:CC\|place:placeId; combine with '\|' for AND |
| `format` | string ("geojson" | "json" | "xml") | No | Response format; one of: 'geojson' (default), 'json', 'xml' |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Batch Requests

**Slug:** `GEOAPIFY_BATCH_REQUESTS`

Create or retrieve asynchronous batch processing jobs for geocoding, reverse geocoding, routing, or isoline APIs. Use cases: - Batch geocode up to 1000 addresses at once (forward geocoding) - Batch reverse geocode multiple coordinates - Process multiple routing or isoline requests in one batch Workflow: 1. Create a job by providing 'api' and 'inputs' (returns job ID and status 'pending') 2. Poll the job by providing 'id' until status changes from 'pending' to complete (results available)

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | No | 32-character hex job ID to retrieve status/results. Omit to create a new job. When provided, all other fields must be omitted. |
| `api` | string ("/v1/geocode/search" | "/v1/geocode/reverse" | "/v1/routing" | "/v1/isoline") | No | API endpoint to batch. Required when creating a job. /v1/geocode/search for forward geocoding, /v1/geocode/reverse for reverse geocoding, /v1/routing for routes, /v1/isoline for isochrones/isodistances. |
| `body` | object | No | Common JSON body applied to all inputs (for APIs requiring a body). Input-level body values override these. |
| `inputs` | array | No | Array of 1-1000 input objects. Required when creating a job. Each input has 'params' (required) and optional 'id' and 'body'. |
| `params` | object | No | Common query parameters applied to all inputs. E.g., {'lang': 'en', 'limit': '3'}. Input-level params override these. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Boundaries Containing Location

**Slug:** `GEOAPIFY_BOUNDARIES`

Retrieve all administrative boundaries that contain a given location. Returns hierarchical boundaries (suburb, city, county, state, country) as GeoJSON features. Use this to find what administrative areas a coordinate belongs to, get boundary polygons for mapping, or identify postal codes and political districts for a location.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | No | Geoapify Place ID (from Places, Geocoding, or Geometry API responses). Use this OR lat/lon, not both. |
| `lat` | number | No | Latitude of the location (-90 to 90). Required together with lon if id is not provided. |
| `lon` | number | No | Longitude of the location (-180 to 180). Required together with lat if id is not provided. |
| `lang` | string | No | ISO 639-1 two-letter language code for localized names (e.g., 'en', 'de', 'fr', 'es', 'ja'). Results will use local names if not specified. |
| `geometry` | string ("point" | "geometry_1000" | "geometry_5000" | "geometry_10000") | No | Geometry detail level: 'point' returns centroid only (fastest), 'geometry_1000/5000/10000' returns simplified polygon boundaries at 1km/5km/10km resolution (lower = more detailed, larger response). |
| `boundaries` | string ("administrative" | "postal_code" | "political" | "low_emission_zone") | No | Type of boundary to retrieve: 'administrative' for government divisions (city/county/state/country), 'postal_code' for postal zones, 'political' for electoral districts, 'low_emission_zone' for environmental zones. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Batch Forward Geocode Job

**Slug:** `GEOAPIFY_CREATE_BATCH_FORWARD_GEOCODE_JOB`

Tool to create a batch forward geocoding job for up to 1000 addresses. Use when you need to geocode multiple addresses asynchronously. Returns a job ID for retrieving results once processing is complete.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `bias` | string | No | Prioritize results based on proximity to geographic areas without limiting search scope. Formats: 'circle:lon,lat,radiusMeters' (circular priority), 'rect:lon1,lat1,lon2,lat2' (rectangular priority), 'countrycode:code1,code2' (country priority, use 'auto' for IP detection), 'proximity:lon,lat' (prioritize by distance from point). |
| `lang` | string | No | Result language in ISO 639-1 format (e.g., 'en' for English). |
| `type` | string ("country" | "state" | "city" | "postcode" | "street" | "amenity") | No | Location types for filtering geocoding results. |
| `filter` | string | No | Refine geocoding results by applying geographic filters. Formats: 'circle:lon,lat,radiusMeters' (circular area), 'rect:lon1,lat1,lon2,lat2' (rectangular area), 'countrycode:code1,code2' (specific countries, use 'auto' for IP detection), 'place:placeId' (specific boundary using place_id). |
| `addresses` | array | Yes | List of address strings to geocode (1-1000 addresses). Each item should be a valid address or partial address. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Batch Reverse Geocode Job

**Slug:** `GEOAPIFY_CREATE_BATCH_REVERSE_GEOCODE_JOB`

Tool to create a batch reverse geocoding job that converts multiple lat/lon coordinates into addresses asynchronously. Use when you need to reverse geocode multiple coordinates (up to 1000) in one request. Returns a job ID for retrieving results.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `lang` | string | No | Result language in ISO 639-1 format (2-letter code, e.g., 'en' for English, 'de' for German). |
| `type` | string ("country" | "state" | "city" | "postcode" | "street" | "amenity") | No | Location type to search for. Filters results by type: country, state, city, postcode, street, or amenity (POIs). |
| `locations` | array | Yes | List of latitude/longitude coordinate pairs to reverse geocode. Minimum 1, maximum 1000 locations. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Forward Geocoding

**Slug:** `GEOAPIFY_FORWARD_GEOCODING`

Tool to convert an address into geographic coordinates. Use when you need latitude and longitude from an address.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `bias` | string | No | Location bias. Formats: 'circle:lon,lat,radiusMeters', 'rect:lon1,lat1,lon2,lat2', 'countrycode:code1,code2', 'proximity:lon,lat'. Combine multiple with '\|' for OR logic. Default is countrycode:auto. |
| `city` | string | No | City name for structured address search |
| `lang` | string | No | Result language (ISO 639-1 2-letter code, e.g., 'en') |
| `name` | string | No | Amenity or place name for structured address search |
| `text` | string | No | Free-form address to search, e.g., 'Berlin, Germany' |
| `type` | string ("country" | "state" | "city" | "postcode" | "street" | "amenity" | "locality") | No | Location type filter. Allowed: country, state, city, postcode, street, amenity, locality |
| `limit` | integer | No | Maximum number of results to return (default 5) |
| `state` | string | No | State or province for structured address search |
| `apiKey` | string | No | Geoapify API key (auto-injected from authentication, typically not needed) |
| `filter` | string | No | Location filters. Formats: 'circle:lon,lat,radiusMeters', 'rect:lon1,lat1,lon2,lat2', 'countrycode:code1,code2', 'place:placeId'. Combine multiple with '\|' for AND logic. |
| `format` | string ("geojson" | "json" | "xml") | No | Response format. One of: geojson (default), json, xml |
| `street` | string | No | Street name for structured address search |
| `country` | string | No | Country name for structured address search |
| `postcode` | string | No | Postal code or ZIP for structured address search |
| `housenumber` | string | No | House number for structured address search |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Geometry Operation

**Slug:** `GEOAPIFY_GEOMETRY`

Tool to perform geometric operations on stored polygon geometries. Use when combining or intersecting multiple stored geometries.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | array | Yes | List of at least two geometry IDs to combine or intersect. |
| `operation` | string ("union" | "intersection") | Yes | Geometric operation to apply. Must be 'union' or 'intersection'. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Batch Forward Geocode Results

**Slug:** `GEOAPIFY_GET_BATCH_FORWARD_GEOCODE_RESULTS`

Tool to retrieve batch forward geocoding job results using the job ID. Use when you need to fetch geocoded addresses from a previously submitted batch job. Results available in JSON or CSV format. Job must be complete (status 200) to get results.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | The unique job ID that was returned when the batch geocoding job was created. This ID is used to retrieve the results. |
| `format` | string ("json" | "csv") | No | The format in which to retrieve the results, either JSON or CSV. Defaults to JSON. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Batch Reverse Geocode Results

**Slug:** `GEOAPIFY_GET_BATCH_REVERSE_GEOCODE_RESULTS`

Tool to retrieve batch reverse geocoding job results. Use when you have a batch job ID from creating a batch reverse geocoding job and want to fetch the completed results.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | The unique job ID that was returned when the batch reverse geocoding job was created. This ID is used to retrieve the results. |
| `format` | string ("json" | "csv") | No | The format in which to retrieve the results, either JSON or CSV. Defaults to JSON if not specified. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Child Boundaries (Consists Of)

**Slug:** `GEOAPIFY_GET_BOUNDARIES_CONSISTS_OF`

Get boundaries that a specified location consists of. Returns child administrative divisions (states for country, districts for city). Useful for drilling down into sub-regions.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | Geoapify Place ID of the parent boundary to get sub-boundaries for (e.g., states for a country, districts for a city). Obtain this ID from Geocoding, Places, or other Boundaries API responses. |
| `lang` | string | No | ISO 639-1 two-letter language code for localized names (e.g., 'en', 'de', 'fr', 'es', 'ja'). Results will use local names if not specified. |
| `geometry` | string ("point" | "geometry_1000" | "geometry_5000" | "geometry_10000") | No | Geometry detail level: 'point' returns centroid only (fastest), 'geometry_1000/5000/10000' returns simplified polygon boundaries at 1km/5km/10km resolution (lower = more detailed, larger response, higher cost). |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Map Style JSON

**Slug:** `GEOAPIFY_GET_MAP_STYLE`

Tool to retrieve vector map style JSON for MapLibre GL and Mapbox GL. Returns a Mapbox-compatible style specification for rendering vector tiles.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `style` | string ("osm-carto" | "osm-bright" | "osm-bright-grey" | "osm-bright-smooth" | "klokantech-basic" | "osm-liberty" | "maptiler-3d" | "toner" | "toner-grey" | "positron" | "positron-blue" | "positron-red" | "dark-matter" | "dark-matter-brown" | "dark-matter-dark-grey" | "dark-matter-dark-purple" | "dark-matter-purple-roads" | "dark-matter-yellow-roads") | Yes | Map style name. Common styles: osm-carto (OpenStreetMap default), osm-bright (bright OSM), dark-matter (dark theme), positron (light theme), toner (high contrast). |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Generate Static Map Image

**Slug:** `GEOAPIFY_GET_STATIC_MAP`

Tool to generate static map images with customizable style, size, center, zoom, markers, and geometries. Use when you need a map image for display or printing.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `area` | string | No | Bounding box to fit the map view in format 'rect:lon1,lat1,lon2,lat2'. The map automatically adjusts center and zoom to fit this area. Cannot be used with center/zoom. |
| `zoom` | string | No | Map zoom level (0-20). Higher values show more detail. Required when using center parameter. |
| `style` | string ("osm-carto" | "osm-bright" | "osm-bright-grey" | "osm-bright-smooth" | "klokantech-basic" | "osm-liberty" | "maptiler-3d" | "toner" | "toner-grey" | "positron" | "dark-matter" | "dark-matter-brown" | "dark-matter-dark-grey" | "dark-matter-dark-purple" | "dark-matter-purple-roads" | "dark-matter-yellow-roads") | Yes | Map style to use. Options: osm-carto (OpenStreetMap Carto), osm-bright (OSM Bright), positron (light base map), dark-matter (dark base map), and others. |
| `width` | integer | Yes | Image width in pixels (1-4096). For high-resolution images with scaleFactor > 1, the effective width should not exceed 4096 pixels. |
| `center` | string | No | Map center coordinates in format 'lonlat:longitude,latitude' (e.g., 'lonlat:2.3522,48.8566' for Paris). Required unless area, marker, geometry, or geojson is specified. |
| `format` | string ("png" | "jpeg") | No | Output image format. Options: 'png' (default, supports transparency), 'jpeg' (smaller file size). |
| `height` | integer | Yes | Image height in pixels (1-4096). For high-resolution images with scaleFactor > 1, the effective height should not exceed 4096 pixels. |
| `marker` | string | No | Marker definition(s) in format 'lonlat:lon,lat;color:hex;size:small\|medium\|large;type:awesome\|material'. Multiple markers can be separated by '\|'. Example: 'lonlat:2.35,48.85;color:#ff0000;size:medium\|lonlat:2.36,48.86;color:#0000ff'. |
| `geojson` | string | No | GeoJSON Feature or FeatureCollection (URL-encoded, max 1024 chars). Features can have properties: fillColor, fillOpacity, lineColor, lineWidth, lineOpacity. The map view automatically adjusts to fit the GeoJSON bounds. |
| `geometry` | string | No | Geometry to display on the map (lines, polygons, circles, rectangles). Format: 'type:geometry_definition;color:hex;width:number'. Types: polyline, polygon, circle, rect. Example: 'polyline:2.35,48.85,2.36,48.86,2.37,48.87;color:#0000ff;width:3'. |
| `scaleFactor` | integer | No | Resolution multiplier for high-quality/print images (1-8). Default is 1. Use 2 for retina displays. Higher values (up to 8) available for print media. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### IP Geolocation

**Slug:** `GEOAPIFY_IP_GEOLOCATION`

Lookup geographic location information for an IP address. Returns city-level location data including country, region, city, coordinates, and additional metadata like currency and language. If no IP is provided, returns location for the caller's IP address.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `ip` | string | No | IP address (IPv4 or IPv6) to lookup; if omitted, uses the caller's IP. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Generate isoline (isochrone/isodistance)

**Slug:** `GEOAPIFY_ISOLINE`

Tool to generate isochrone or isodistance isolines. Use when visualizing reachable areas from a point; use `id` to poll ongoing calculations.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | No | Unique identifier of previously generated isoline (valid 24h). Exclusive with lat/lon/type/mode/range. |
| `lat` | number | No | Latitude of the origin point in decimal degrees. Required for new calculation. |
| `lon` | number | No | Longitude of the origin point in decimal degrees. Required for new calculation. |
| `mode` | string ("drive" | "light_truck" | "medium_truck" | "truck" | "heavy_truck" | "truck_dangerous_goods" | "long_truck" | "bus" | "scooter" | "motorcycle" | "bicycle" | "mountain_bike" | "road_bike" | "walk" | "hike" | "transit" | "approximated_transit") | No | Travel mode for route calculation. Required for new calculation. |
| `type` | string ("time" | "distance") | No | Isoline type: 'time' (seconds) or 'distance' (meters). Required for new calculation. |
| `avoid` | string | No | Features to avoid separated by '\|'. Options: tolls, ferries, highways. Example: 'tolls\|ferries'. |
| `range` | string | No | Isoline range(s): seconds for time type (max 3600) or meters for distance type (max 60000). Supply single int or list for multiple ranges. |
| `units` | string ("metric" | "imperial") | No | Units for distance calculations. Default metric. |
| `traffic` | string ("free_flow" | "approximated") | No | Traffic model (motorized modes only). Default free_flow. |
| `max_speed` | integer | No | Vehicle max speed in KPH (10-252). Applies to drive/truck/bus modes. |
| `route_type` | string ("balanced" | "short" | "less_maneuvers") | No | Route optimization. Default balanced. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Postcodes

**Slug:** `GEOAPIFY_LIST_POSTCODES`

Tool to list postcodes within a specified area or boundary. Use when you need to retrieve multiple postcodes in a geographic region using filters like circle, rectangle, or place ID.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `limit` | integer | No | Maximum number of postcodes to return (1-100) |
| `filter` | string | Yes | Filter by area. Supported formats: 'place:place_id' (e.g., 'place:51a59aa36fd7e7594059923ee27e96a94740f00102f90185250300000000c00208'), 'rect:lon1,lat1,lon2,lat2' (e.g., 'rect:-0.1447,51.5008,-0.1108,51.5163'), 'circle:lon,lat,radius_meters' (e.g., 'circle:-0.1278,51.5074,5000') |
| `countrycode` | string | No | Restrict results to country (ISO 3166-1 alpha-2 code, e.g., 'gb', 'us') |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Map Matching

**Slug:** `GEOAPIFY_MAP_MATCHING`

Snap GPS traces to the road network for accurate route reconstruction. Use this tool to: - Correct GPS drift and inaccuracies in recorded tracks - Align vehicle/cycling/walking traces to actual roads - Get road names and properties along the matched route - Calculate accurate distance and travel time from GPS data

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `mode` | string ("drive" | "walk" | "bicycle") | Yes | Travel mode: 'drive' for car, 'walk' for pedestrian, or 'bicycle' for cycling |
| `waypoints` | array | Yes | List of GPS waypoints to snap to the road network. Provide at least 2 waypoints (up to 1000). |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Fetch Geoapify Map Tiles

**Slug:** `GEOAPIFY_MAP_TILES`

Tool to fetch raster map tiles or style JSON from Geoapify. Use when rendering custom maps with specific styles.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `x` | integer | No | Tile column X (required when mode='tile'). |
| `y` | integer | No | Tile row Y (required when mode='tile'). |
| `z` | integer | No | Zoom level (required when mode='tile'). |
| `mode` | string ("tile" | "style") | No | Choose 'tile' to fetch a raster PNG tile, or 'style' to fetch the style JSON. |
| `style` | string | Yes | Map style ID. E.g., 'osm-bright', 'positron', 'dark-matter'. |
| `apiKey` | string | Yes | Your Geoapify API key. |
| `retina` | boolean | No | Whether to request high-DPI '@2x' tile (only when mode='tile'). |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Marker Icon

**Slug:** `GEOAPIFY_MARKER_ICON`

Generate custom map marker icons as PNG images. Creates customizable marker icons for use in mapping applications (Leaflet, MapLibre GL, Google Maps, etc.). Supports multiple styles (material, circle, plain), custom colors, icons from Material Design and Font Awesome libraries, or custom text/numbers. Example use cases: - Create a red location pin with a star icon - Generate numbered markers (1, 2, 3...) for route waypoints - Create custom-colored markers matching your brand

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `icon` | string | No | Icon name from the selected library (e.g., 'star', 'home', 'landmark', 'map-marker'). See Material Design Icons or Font Awesome v6 for available names. |
| `size` | integer | No | Total icon image height in pixels. Common values: 30, 40, 50, 80. |
| `text` | string | No | Text or number to display instead of an icon (e.g., '1', 'A', 'B'). Cannot be used with 'icon' parameter. |
| `type` | string ("material" | "awesome" | "circle" | "plain") | No | Marker style/shape type. Options: 'material' (pin-style), 'awesome' (shaped marker), 'circle' (round), 'plain' (icon only, no background). Defaults to 'material'. |
| `color` | string | No | Background/marker color as hex code (e.g., '#FF5050', '#3498db'). Not used for type='plain'. |
| `iconType` | string ("material" | "awesome" | "lucide") | No | Icon library to use. Options: 'material' (Material Design Icons), 'awesome' (Font Awesome v6), 'lucide' (Lucide icons). Defaults to match 'type' parameter. |
| `noShadow` | boolean | No | Set to true to remove the default shadow from the marker. |
| `contentSize` | integer | No | Inner icon/text size in pixels. Should be less than 'size'. Common values: 20, 28, 35. |
| `scaleFactor` | integer ("1" | "2") | No | Scale factor for high-resolution displays. Use 2 for retina/HiDPI displays. |
| `shadowColor` | string | No | Shadow color as hex code (e.g., '#00000080' for semi-transparent black). |
| `strokeColor` | string | No | Border/stroke color as hex code (e.g., '#000000'). Not used for type='plain'. |
| `contentColor` | string | No | Color of inner icon/text as hex code (e.g., '#FFFFFF', '#4f4f4f'). |
| `noWhiteCircle` | boolean | No | Set to true to remove the white circle background behind the icon. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Place Details

**Slug:** `GEOAPIFY_PLACE_DETAILS`

Tool to retrieve detailed information about a specific place. Use when you have a place ID or coordinates and need comprehensive metadata.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | No | Place unique identifier returned by Geoapify Places or Geocoding API. Required if `lat` and `lon` are not provided. |
| `lat` | number | No | Latitude of the place. Must be provided together with `lon` if `id` is omitted. |
| `lon` | number | No | Longitude of the place. Must be provided together with `lat` if `id` is omitted. |
| `lang` | string | No | Response language (ISO 639-1 code, two lowercase letters). |
| `features` | string | No | Comma-separated list of features to return. Defaults to `details` when request is by `id`. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Places Search

**Slug:** `GEOAPIFY_PLACES`

Search for points of interest (POIs) like restaurants, hotels, attractions, hospitals, etc. within a geographic area. Use this tool when you need to find places by category near a location. You must provide either a 'filter' (to search within a bounded area) or 'bias' (to rank results by proximity to a point). Common use cases: - Find restaurants near a location: categories=['catering.restaurant'], bias='proximity:lon,lat' - Search for hotels in a city area: categories=['accommodation.hotel'], filter='circle:lon,lat,5000' - Find wheelchair-accessible attractions: categories=['tourism.attraction'], conditions=['wheelchair']

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `bias` | string | No | Proximity bias to rank results by distance to a point. Required if 'filter' not provided. Format: 'proximity:lon,lat'. Results are sorted by distance to this point. |
| `lang` | string | No | ISO 639-1 language code for localized results (e.g., 'en', 'de', 'ja', 'fr'). |
| `name` | string | No | Filter results to only include places matching this name (case-insensitive partial match). |
| `limit` | integer | No | Maximum number of results to return (1-500). Default is 20. |
| `filter` | string | No | Spatial filter to constrain search area. Required if 'bias' not provided. Formats: 'circle:lon,lat,radiusMeters' (e.g., 'circle:13.4,52.5,1000' for 1km radius), 'rect:lon1,lat1,lon2,lat2' (bounding box with SW and NE corners). |
| `offset` | integer | No | Number of results to skip for pagination. Use with 'limit' to paginate through results. |
| `categories` | array | Yes | Place category keys to search for. Common categories include: 'catering.restaurant', 'catering.cafe', 'accommodation.hotel', 'tourism.attraction', 'tourism.sights', 'healthcare.hospital', 'commercial.supermarket', 'entertainment.cinema', 'sport.fitness'. Multiple categories can be provided to search across types. |
| `conditions` | array | No | Additional condition filters for accessibility or amenities, e.g., 'wheelchair' to filter only wheelchair-accessible places, 'internet_access' for places with WiFi. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Postcode Search

**Slug:** `GEOAPIFY_POSTCODE`

Tool to retrieve postcode information for a location. Use when you need to fetch postcode details based on a given postcode or geographic coordinates.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `lat` | number | No | Latitude of location; must be provided with lon |
| `lon` | number | No | Longitude of location; must be provided with lat |
| `lang` | string | No | Response language (ISO 639-1 code, 2 letters) |
| `format` | string ("json" | "geojson" | "xml") | No | Response format; one of: 'json', 'geojson', 'xml' |
| `geometry` | string ("point" | "original") | No | Return geometry as 'point' or 'original' boundary |
| `postcode` | string | No | Postal code to search for |
| `countrycode` | string | No | Restrict search to country (ISO 3166-1 alpha-2) |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Reverse Geocoding

**Slug:** `GEOAPIFY_REVERSE_GEOCODING`

Tool to reverse geocode coordinates into a structured address. Use when converting lat/lon to human-readable addresses.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `lat` | number | Yes | Latitude coordinate in decimal degrees. |
| `lon` | number | Yes | Longitude coordinate in decimal degrees. |
| `lang` | string | No | 2-letter ISO 639-1 language code for the result. |
| `type` | string ("country" | "state" | "city" | "postcode" | "street" | "amenity") | No | Address level to search; one of country, state, city, postcode, street, amenity. |
| `limit` | integer | No | Maximum number of results to return (default: 1). |
| `format` | string ("geojson" | "json" | "xml") | No | Response format: one of geojson, json, xml (default: geojson). |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Route Matrix

**Slug:** `GEOAPIFY_ROUTE_MATRIX`

Tool to compute travel time and distance matrices. Use when you need durations and distances between multiple origin and destination pairs.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `mode` | string ("drive" | "light_truck" | "medium_truck" | "truck" | "heavy_truck" | "truck_dangerous_goods" | "long_truck" | "bus" | "scooter" | "motorcycle" | "bicycle" | "mountain_bike" | "road_bike" | "walk" | "hike") | No | Travel mode for the route calculation. Options: 'drive' (default), 'walk', 'bicycle', 'truck', etc. |
| `type` | string ("balanced" | "short" | "less_maneuvers") | No | Route type preference: 'balanced' (default), 'short' (shortest distance), 'less_maneuvers' (fewer turns). |
| `avoid` | array | No | List of road types or features to avoid. Each item specifies a type ('tolls', 'highways', 'ferries', 'unpaved') and optional importance (0.0-1.0). |
| `units` | string ("metric" | "imperial") | No | Unit system for distances: 'metric' (default, meters) or 'imperial' (miles). |
| `apiKey` | string | Yes | Geoapify API key |
| `sources` | array | Yes | List of origin waypoints (at least one required). Each waypoint has a location [longitude, latitude]. |
| `targets` | array | Yes | List of destination waypoints (at least one required). Each waypoint has a location [longitude, latitude]. |
| `traffic` | string ("free_flow" | "approximated") | No | Traffic model for motorized modes: 'free_flow' (default, no traffic) or 'approximated' (estimated traffic delays). |
| `max_speed` | number | No | Maximum vehicle speed in km/h (10-252). Limits the assumed travel speed. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Route Planner

**Slug:** `GEOAPIFY_ROUTE_PLANNER`

Optimize multi-agent routes for deliveries, pickups, and service jobs. Solves Vehicle Routing Problems (VRP) including: Travelling Salesman (TSP), Capacitated VRP, VRP with Time Windows, and Pickup-Delivery problems. Required: Either 'jobs' (one-way tasks) or 'shipments' (pickup-delivery pairs). Coordinates: Use [longitude, latitude] format (not lat/lon).

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `jobs` | array | No | One-way service jobs to assign. Use for simple deliveries/services. Required if shipments not provided. |
| `mode` | string | No | Travel mode: 'drive' (car), 'truck', 'bicycle', 'walk', 'transit'. Defaults to drive. |
| `type` | string ("balanced" | "short" | "less_maneuvers") | No | Route optimization: 'balanced' (default), 'short' (minimize distance), 'less_maneuvers' (simpler directions). |
| `avoid` | array | No | Roads or features to avoid: tolls, ferries, highways, or specific locations. |
| `units` | string ("metric" | "imperial") | No | Distance units in response: 'metric' (meters) or 'imperial' (miles). Defaults to metric. |
| `agents` | array | No | List of agents (vehicles/workers) to assign work to. Defaults to 1 agent if omitted. |
| `traffic` | string ("free_flow" | "approximated") | No | Traffic model: 'free_flow' (no traffic) or 'approximated' (estimated traffic). Defaults to free_flow. |
| `locations` | array | No | Reusable locations referenced by index. Useful for warehouses or depots used by multiple agents. |
| `max_speed` | number | No | Max speed in km/h to cap travel speed calculations for driving modes. |
| `shipments` | array | No | Paired pickup-delivery shipments. Use when items must be picked up then delivered. Required if jobs not provided. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Routing

**Slug:** `GEOAPIFY_ROUTING`

Tool to calculate routes between multiple waypoints. Use when you need both distance, time, and turn-by-turn directions for two or more coordinates.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `lang` | string ("bg" | "ca" | "cs" | "da" | "de" | "el" | "en-GB" | "en" | "es" | "et" | "fi" | "fr" | "hi" | "hu" | "it" | "ja" | "nb-NO" | "nl" | "pl" | "pt-BR" | "pt" | "ro" | "ru" | "sk" | "sl" | "sv" | "tr" | "uk") | No | Language code for instructions (e.g., en, de, fr). |
| `mode` | string ("drive" | "light_truck" | "medium_truck" | "truck" | "heavy_truck" | "truck_dangerous_goods" | "long_truck" | "bus" | "scooter" | "motorcycle" | "bicycle" | "mountain_bike" | "road_bike" | "walk" | "hike" | "transit" | "approximated_transit") | No | Travel mode (default: drive). |
| `type` | string ("balanced" | "short" | "less_maneuvers") | No | Route optimization: balanced (default), short, less_maneuvers. (less_maneuvers only for motorized road modes) |
| `avoid` | string | No | Avoid options separated by '\|', e.g., 'tolls\|ferries:0.5\|highways'. |
| `units` | string ("metric" | "imperial") | No | Distance units; metric (default) or imperial. |
| `format` | string ("geojson" | "json" | "xml") | No | Response format: geojson (default), json, xml. |
| `details` | string | No | Comma-separated extra details: instruction_details, route_details, elevation. |
| `traffic` | string ("free_flow" | "approximated") | No | Traffic model for motorized modes (default: free_flow). |
| `max_speed` | integer | No | Max vehicle speed in KPH (10-252). |
| `waypoints` | string | Yes | Two or more waypoints in 'lat,lon' or 'lonlat:lon,lat' format, pipe-separated. E.g. '36.734770,-76.610637\|36.761226,-76.488354' |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |
