# Find DuckDuckGo Maps places inside a map viewport

Returns the DuckDuckGo Maps places that match a search around a point, with address, rating and category. Use it to find local places near given coordinates.

Tool `duckduckgo.maps.search` on DuckDuckGo. Contract version 1, released 2026-10-27.

## Example call

Over REST, send the input in the body. Over MCP, pass the same input to `call_tool`.

cURL:

```bash
curl https://api.voxoria.ai/v1/tools/duckduckgo.maps.search/calls \
  -H "Authorization: Bearer $VOXORIA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"input":{"query":"coffee shops","latitude":30.2672,"longitude":-97.7431}}'
```

Python:

```python
import os

import httpx

response = httpx.post(
    "https://api.voxoria.ai/v1/tools/duckduckgo.maps.search/calls",
    headers={"Authorization": f"Bearer {os.environ['VOXORIA_API_KEY']}"},
    json={
        "input": {
            "query": "coffee shops",
            "latitude": 30.2672,
            "longitude": -97.7431,
        },
    },
    timeout=60,
)
print(response.json())
```

TypeScript:

```ts
const response = await fetch("https://api.voxoria.ai/v1/tools/duckduckgo.maps.search/calls", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.VOXORIA_API_KEY}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    "input": {
      "query": "coffee shops",
      "latitude": 30.2672,
      "longitude": -97.7431,
    },
  }),
});
console.log(await response.json());
```

MCP (`tools/call` params):

```json
{
  "name": "call_tool",
  "arguments": {
    "tool": "duckduckgo.maps.search",
    "input": {
      "query": "coffee shops",
      "latitude": 30.2672,
      "longitude": -97.7431
    }
  }
}
```

Both return [the full response](/docs/call-response.md): the call's ID, status and cost, with this tool's result in `output`.

## Input

| Input | Type | Required | Default | Description |
| --- | --- | --- | --- | --- |
| `query` | string | Yes |  | What to look for on the map, a name or a kind of place, such as "coffee shops". 1 to 500 characters. |
| `latitude` | number | Yes |  | Latitude of the center of the map to search, from -90 to 90. From -90 to 90. |
| `longitude` | number | Yes |  | Longitude of the center of the map to search, from -180 to 180. From -180 to 180. |

## Output

A successful call returns these blocks in its `output`. A field not marked required can be `null`.

### results

A list of rows. Always present, possibly empty.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `position` | integer | Yes | Rank among the places found, starting at 1. |
| `title` | string | Yes | Name of the business or place. |
| `address` | string | No |  |
| `latitude` | number | No |  |
| `longitude` | number | No |  |
| `rating` | number | No | Average review rating, out of 5. |
| `review_count` | integer | No |  |
| `price_range` | string | No | Price level as DuckDuckGo shows it, such as "$$". Not parsed. |
| `price_level` | integer | No | Price level from 1, least expensive, to 4, most expensive. |
| `category` | string | No | Kind of business, such as "Coffee & tea". |

## Example output

The `output` of a real call, each list cut to 3 items.

```json
{
  "results": [
    {
      "position": 1,
      "title": "Desnudo Coffee",
      "address": "111 Congress Ave, Austin, TX 78701",
      "latitude": 30.2641013,
      "longitude": -97.743957,
      "rating": 4.5,
      "review_count": 119,
      "price_range": null,
      "price_level": null,
      "category": "Coffee roasteries"
    },
    {
      "position": 2,
      "title": "Sweetwaters Coffee & Tea",
      "address": "316 W 12th St, Austin, TX 78701",
      "latitude": 30.2750702,
      "longitude": -97.7438217,
      "rating": 4.5,
      "review_count": 96,
      "price_range": null,
      "price_level": null,
      "category": "Coffee & tea"
    },
    {
      "position": 3,
      "title": "Idlewild Coffee",
      "address": "824 W 12th St, Ste A, Austin, TX 78701",
      "latitude": 30.276599,
      "longitude": -97.7495563,
      "rating": 4.5,
      "review_count": 57,
      "price_range": "$$",
      "price_level": 2,
      "category": "Coffee & tea"
    }
  ]
}
```
