ChangelogNew

Compare answers across a grid of places in one call

API
A 3 by 3 grid of points around Gangnam Station on a map, beside the ChatGPT prompt, the grid settings and a summary with all 9 tasks accepted

One call asks the same question from a 3×3 to 9×9 grid of coordinates and returns the answers point by point. GEO monitors can run on a grid and show it on a map.

What you get

  • POST /v1/async/task/grid takes a center point, a grid size of 3, 5, 7 or 9, and a radiusMeters from 100 to 50,000, and starts one task per point.
  • Each point returns its row, col, location and task. Row 0 is the north edge and column 0 the west edge.
  • GET /v1/async/task/grid/:id shows the grid and every point; include=response adds finished answers.
  • A GEO monitor now accepts location (one point) or grid. Runs equal questions × engines × points, up to 200 tasks, and GET /v1/monitors/:id/grid returns answers, mentions, citations and the top competitor per point.
  • payload.location now takes only coordinates such as {"latitude":37.4979,"longitude":127.0276}. Place names are no longer accepted, so convert names to coordinates before you submit.

How it works

Every point runs as an ordinary task, so polling, webhooks, credits and concurrency work as they do for single tasks. Sending the same idempotencyKey again runs only the points that are missing. In the dashboard, the Visibility tab shows a By location map where each cell opens that point's latest answers.

Where it helps

  • See which neighborhoods mention your brand for a local question such as nearby clinics.
  • Compare the same prompt across a city before you change local pages or listings.
  • Track coverage over time with a grid monitor.

Send a request

Send the question once with a center point and a grid. The country in payload stays as it is for a single task.

curl -X POST https://api.querying.ai/v1/async/task/grid \
  -H "Authorization: Bearer $QUERYING_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "taskType": "CHATGPT",
    "payload": {
      "prompt": "recommend a dermatologist nearby",
      "country": "KR"
    },
    "grid": {
      "center": { "latitude": 37.4979, "longitude": 127.0276 },
      "size": 3,
      "radiusMeters": 1500
    },
    "idempotencyKey": "gangnam-derm-2026-10-09"
  }'

Response

The call answers 200 with the grid and one entry per point. spacingMeters is the distance between neighboring points.

JSON
{
  "success": true,
  "grid": {
    "id": "…",
    "center": { "latitude": 37.4979, "longitude": 127.0276 },
    "size": 3,
    "radiusMeters": 1500,
    "spacingMeters": 1500
  },
  "summary": { "total": 9, "succeeded": 9, "failed": 0 },
  "points": [
    {
      "row": 0,
      "col": 0,
      "location": { "latitude": 37.5114, "longitude": 127.0097 },
      "task": { "id": "…", "status": "PENDING" },
      "credits": 1
    },
    {
      "row": 0,
      "col": 1,
      "location": { "latitude": 37.5114, "longitude": 127.0276 },
      "task": { "id": "…", "status": "PENDING" },
      "credits": 1
    }
  ]
}

Read the grid later by its ID. Each point shows its task status and, with include=response, its answer.

curl "https://api.querying.ai/v1/async/task/grid/$GRID_ID?include=response" \
  -H "Authorization: Bearer $QUERYING_API_KEY"

Errors

If the center point is refused for a reason every point shares, the whole grid is refused and no task is created. A location format that is wrong returns 400, and an engine without location support returns 422.

VALIDATION_ERRORHTTP 400
A field is missing or out of range. details names the field.
LOCATION_UNSUPPORTEDHTTP 422
payload.location works on CHATGPT, GEMINI, GOOGLE, AIMODE and GOOGLE_SERP. Other engines return this code when you submit.
KEY_SCOPE_DENIEDHTTP 403
The engine is outside the key’s Allowed engines. Use another key, or add the engine in Manage key.
INSUFFICIENT_CREDITSHTTP 402
The balance is below the price of the task. Add credits or upgrade the plan, then send again.

Pricing

Each point costs the credits of a single task on its engine. Plan limits are listed at https://querying.ai/pricing.

More updates

Stay in the loop

Get new product updates in your inbox.

RSS feed