> ## Documentation Index
> Fetch the complete documentation index at: https://docs.querying.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Place Lookup: sehen, welchen Eintrag jede KI-Engine für ein Geschäft zeigt

> Fragen Sie ChatGPT, Gemini, Google, Copilot und Naver nach einem Geschäft und lesen Sie den Eintrag jeder Engine: aus welcher Kartendatenbank er stammt, was er zeigt und wo er von den Angaben des Geschäfts abweicht.

Mit Place Lookup prüfen Sie, wie KI-Engines ein Geschäft, eine Filiale oder eine Praxis zeigen. Jede Engine zeigt Orte aus einer Kartendatenbank. Gemini, Copilot und die Google-Ergebnisseite zeigen Google-Maps-Einträge, Naver AI Tab zeigt Naver-Place-Einträge, und ChatGPT zeigt Einträge aus Quellen wie Yelp, Tripadvisor und Google Maps. Eine Abfrage zeigt Ihnen, welchen Eintrag jede Engine verwendet hat und was daran falsch ist, damit Sie wissen, welchen Eintrag Sie korrigieren müssen.

## Abfrage einreichen

```bash theme={"theme":"css-variables"}
curl -X POST https://api.querying.ai/v1/place-lookup \
  -H "Authorization: Bearer $QUERYING_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "place": {
      "name": "Canlis",
      "address": "2576 Aurora Ave N, Seattle, WA 98109",
      "location": { "latitude": 47.6430534, "longitude": -122.3467361 },
      "phone": "(206) 283-3313",
      "website": "https://canlis.com/"
    },
    "country": "US",
    "idempotencyKey": "canlis-2026-10"
  }'
```

Die Abfrage stellt jeder Engine zwei Fragen. Jede Frage ist ein normaler Task dieser Engine, und die Antwort listet sie auf:

```json theme={"theme":"css-variables"}
{
  "success": true,
  "lookup": { "id": "canlis-2026-10" },
  "tasks": [
    {
      "engine": "CHATGPT",
      "ask": 1,
      "success": true,
      "task": {
        "id": "9d02deef-...",
        "taskType": "CHATGPT",
        "status": "QUEUED",
        "priority": 1,
        "createdAt": "2026-10-20T09:00:00.000Z",
        "idempotencyKey": "canlis-2026-10:CHATGPT:1"
      }
    },
    { "engine": "CHATGPT", "ask": 2, "success": true, "task": { "...": "..." } },
    { "engine": "GEMINI", "ask": 1, "success": true, "task": { "...": "..." } }
  ]
}
```

Lesen Sie die Abfrage mit `GET /v1/place-lookup/{id}`, bis `lookup.status` `COMPLETED` ist. Die meisten Abfragen sind in unter zwei Minuten fertig, fragen Sie also alle 5 bis 10 Sekunden ab. Eine Abfrage sendet keinen Webhook. Das Anfrageschema finden Sie in der [API-Referenz](/de/api-reference/place-lookup.md).

```bash theme={"theme":"css-variables"}
curl https://api.querying.ai/v1/place-lookup/canlis-2026-10 \
  -H "Authorization: Bearer $QUERYING_API_KEY"
```

## Anfragefelder

| Feld | Pflicht | Beschreibung |
| - | - | - |
| `place.name` | Ja | Der Name des Geschäfts, 1–200 Zeichen. Bei einer Kette mit Filiale, etwa `Anchorhead Coffee Downtown Seattle`. |
| `place.address` | `address` oder `location` | Die Adresse, bis zu 500 Zeichen. |
| `place.location` | `address` oder `location` | Die Position des Geschäfts als `{ "latitude", "longitude" }` in Dezimalgrad. Damit trägt jeder Eintrag seine Entfernung zum Geschäft, und eine falsch gesetzte Markierung wird gemeldet. |
| `place.phone` | Nein | Die offizielle Telefonnummer in beliebigem Format, bis zu 50 Zeichen. Die Telefonnummer jedes Eintrags wird damit verglichen. |
| `place.website` | Nein | Die offizielle Website, eine `http`- oder `https`-URL. Die Website jedes Eintrags wird damit nach Website verglichen. |
| `place.googlePlaceId` | Nein | Die Google Place ID des Geschäfts, etwa `ChIJRXCfNwUVkFQRxraD8U-dANE`. Ein Eintrag mit dieser ID ist das Geschäft. |
| `place.naverPlaceId` | Nein | Die Naver Place ID des Geschäfts oder seine Seite auf `map.naver.com` oder `place.naver.com`. Ein Eintrag mit dieser ID ist das Geschäft. |
| `place.yelpUrl` | Nein | Die Seite `yelp.com/biz/...` des Geschäfts. Ein Eintrag mit dieser Yelp-Seite ist das Geschäft. |
| `country` | Ja | Das Land des Geschäfts als ISO-3166-1-Alpha-2-Code, etwa `US` oder `KR`. |
| `engines` | Nein | Die abzufragenden Engines ohne Wiederholung: `CHATGPT`, `GEMINI`, `GOOGLE`, `BING_COPILOT` und `NAVER_AI_TAB`. Standard: alle fünf für `KR`, die ersten vier anderswo. `NAVER_AI_TAB` gilt nur für `KR`. |
| `idempotencyKey` | Nein | Die id der Abfrage, 1–200 Zeichen ohne Leerzeichen am Anfang oder Ende. Ohne sie erzeugt der Server eine UUID. Siehe [Abfrage erneut senden](#abfrage-erneut-senden). |
| `priority` | Nein | Ganzzahl `1`–`10`, Standard `1`, wird für jeden Task gesetzt. Sie garantiert keine Ausführungsreihenfolge. |

Andere Felder, auch `webhook`, liefern `400 VALIDATION_ERROR`.

## Wie eine Abfrage fragt

Jede Engine erhält zwei Fragen. ChatGPT, Gemini und Copilot sollen das Geschäft auf einer Karte zeigen, beim zweiten Mal mit seiner Adresse. Auf der Google-Ergebnisseite wird nach dem Standort des Geschäfts gesucht, dann nach seinem Namen von seiner eigenen Position aus. Naver AI Tab wird nach dem Standort des Geschäfts gefragt, dann nach seinem Namen.

| Engine | Erste Frage | Zweite Frage |
| - | - | - |
| `CHATGPT`, `GEMINI`, `BING_COPILOT` | `Show {name} on a map` | `Show {name}, {address} on a map` |
| `GOOGLE` | `{name} location` | `{name}`, gesucht von `place.location` aus |

Für `KR` sind die Fragen koreanisch, und die zweite Frage an ChatGPT ist `Show {name} on a map` auf Englisch, weil ChatGPT die Ortskarte eines koreanischen Geschäfts häufiger zeigt, wenn man auf Englisch fragt. Ohne `place.address` stellt eine Engine, deren zweite Frage die Adresse ergänzt, die erste Frage zweimal. Ohne `place.location` ergänzt die zweite Google-Suche außerhalb von `KR` die Adresse. `via[]` im Ergebnis zeigt jede Frage so, wie sie gesendet wurde.

## Ergebnis lesen

Die Canlis-Abfrage sieht so aus, gekürzt auf die wichtigsten Felder:

```json theme={"theme":"css-variables"}
{
  "success": true,
  "lookup": {
    "id": "canlis-2026-10",
    "status": "COMPLETED",
    "place": {
      "name": "Canlis",
      "address": "2576 Aurora Ave N, Seattle, WA 98109",
      "location": { "latitude": 47.6430534, "longitude": -122.3467361 },
      "phone": "(206) 283-3313",
      "website": "https://canlis.com/"
    },
    "country": "US",
    "engines": [
      {
        "engine": "CHATGPT",
        "status": "COMPLETED",
        "found": true,
        "via": [
          {
            "taskType": "CHATGPT",
            "prompt": "Show Canlis on a map",
            "taskId": "9d02deef-...",
            "status": "COMPLETED",
            "collectedAt": "2026-10-19T16:38:48.957Z",
            "places": 1
          },
          {
            "taskType": "CHATGPT",
            "prompt": "Show Canlis, 2576 Aurora Ave N, Seattle, WA 98109 on a map",
            "taskId": "91505c8f-...",
            "status": "COMPLETED",
            "collectedAt": "2026-10-19T16:39:04.194Z",
            "places": 1
          }
        ],
        "record": {
          "position": 1,
          "name": "Canlis",
          "source": "yelp",
          "provider": "yelp-feed",
          "url": "https://www.yelp.com/biz/canlis-seattle?adjust_creative=openai",
          "address": "2576 Aurora Ave N, Seattle, WA 98109, United States",
          "latitude": 47.6430933,
          "longitude": -122.3467535,
          "phone": "+1 206-283-3313",
          "rating": 4,
          "reviewCount": 1935,
          "website": "https://canlis.com/",
          "match": {
            "same": true,
            "by": ["phone", "website", "location", "address", "name"],
            "nameScore": 1,
            "distanceMeters": 5
          }
        }
      },
      {
        "engine": "GEMINI",
        "status": "COMPLETED",
        "found": true,
        "via": [{ "...": "..." }],
        "record": {
          "position": 1,
          "name": "Canlis",
          "source": "google_maps",
          "placeId": "ChIJRXCfNwUVkFQRxraD8U-dANE",
          "url": "https://maps.google.com/?cid=15060210120606856902",
          "phone": "+1 206-283-3313",
          "rating": 4.6,
          "reviewCount": 2892,
          "website": "https://canlis.com/",
          "match": {
            "same": true,
            "by": ["phone", "website", "location", "address", "name"],
            "nameScore": 1,
            "distanceMeters": 5
          }
        }
      },
      {
        "engine": "GOOGLE",
        "status": "COMPLETED",
        "found": false,
        "via": [
          {
            "taskType": "GOOGLE",
            "query": "Canlis location",
            "taskId": "6d3c3a73-...",
            "status": "COMPLETED",
            "collectedAt": "2026-10-19T16:38:43.932Z",
            "places": 0
          },
          {
            "taskType": "GOOGLE",
            "query": "Canlis",
            "location": { "latitude": 47.6430534, "longitude": -122.3467361 },
            "taskId": "980a858a-...",
            "status": "COMPLETED",
            "collectedAt": "2026-10-19T16:38:48.902Z",
            "places": 0
          }
        ]
      },
      {
        "engine": "BING_COPILOT",
        "status": "COMPLETED",
        "found": true,
        "via": [{ "...": "..." }],
        "record": {
          "name": "Canlis",
          "source": "google_maps",
          "placeId": "ChIJRXCfNwUVkFQRxraD8U-dANE",
          "openState": "Closed · Opens 5 PM Tue",
          "...": "..."
        }
      }
    ],
    "summary": {
      "foundIn": ["CHATGPT", "GEMINI", "BING_COPILOT"],
      "notFoundIn": ["GOOGLE"],
      "failed": [],
      "pending": [],
      "differences": []
    },
    "credits": 10
  }
}
```

ChatGPT zeigte den Yelp-Eintrag des Restaurants. Gemini und Copilot zeigten denselben Google-Maps-Eintrag mit derselben Place ID. Die Google-Ergebnisseite zeigte bei keiner der beiden Fragen einen Ort, daher ist ihr `found` `false`.

### `engines[]`

| Feld | Beschreibung |
| - | - |
| `engine` | Die abgefragte Engine. |
| `status` | `PROCESSING`, bis beide Fragen enden, danach `COMPLETED`. `FAILED`, wenn beide Fragen fehlgeschlagen sind. |
| `found` | `true`, sobald eine Antwort das Geschäft zeigt. `false`, wenn beide Fragen beendet sind und keine Antwort es zeigte. `null`, solange eine Frage noch läuft, und wenn beide fehlgeschlagen sind. |
| `via[]` | Jede Frage, wie sie gesendet wurde: `prompt` oder `query`, `location`, falls gesendet, `taskId`, sobald die Frage startet, `status`, `collectedAt`, `places` (wie viele Orte die Antwort zeigte) und `error` bei einer fehlgeschlagenen Frage. `status` ist `PENDING`, solange die Frage auf Platz in Ihrem Tarif wartet. |
| `record` | Der Eintrag des Geschäfts: von den Orten in beiden Antworten derjenige, der am stärksten zum Geschäft passt. Vorhanden, wenn `found` `true` ist. |
| `issues` | Was an `record` falsch ist. Nur vorhanden, wenn etwas falsch ist. |

### `record`

| Feld | Beschreibung |
| - | - |
| `source` | Die Kartendatenbank des Eintrags: `google_maps`, `naver_place`, `yelp`, `tripadvisor` oder `unknown`, wenn die Antwort sie nicht zeigt. |
| `placeId`, `url` | ID und Seite des Eintrags in seiner Quelle, etwa eine Google Place ID und ihr Google-Maps-Link. |
| `name`, `address`, `latitude`, `longitude`, `phone`, `website` | Die Angaben, die die Engine zeigt. Nur Felder, die die Antwort enthält, sind vorhanden. |
| `category`, `rating`, `reviewCount`, `openState`, `image`, `description` | Weitere Angaben, wie die Engine sie zeigt, sofern vorhanden. |
| `position` | Die Stelle des Eintrags unter den Orten der Antwort, ab 1. |
| `provider` | Nur ChatGPT: die Quelle, die ChatGPT für den Eintrag nennt, etwa `yelp-feed` oder `bright-feed`. |
| `localName` | Nur ChatGPT: der andere Name des Eintrags, etwa der koreanische Name eines koreanischen Geschäfts. |
| `resolvedBy` | Nur ChatGPT: `address`, wenn ChatGPT den Eintrag über eine vom Modell geschriebene Adresse gefunden hat. Ein solcher Eintrag kann zu einem anderen Betrieb an dieser Adresse gehören. |
| `closed` | Nur ChatGPT: `permanently` oder `temporarily`, wenn der Eintrag als geschlossen markiert ist. |
| `match` | Warum der Eintrag das Geschäft ist. `by` listet die übereinstimmenden Angaben: `place_id`, `phone`, `website`, `location`, `address` und `name`. `nameScore` ist die Namensähnlichkeit von 0 bis 1, `distanceMeters` die Entfernung von `place.location` zur Markierung des Eintrags. |

### `issues`

| Problem | Bedeutung |
| - | - |
| `phone_mismatch` | Die Telefonnummer des Eintrags weicht von `place.phone` ab oder, ohne diese Angabe, von der Nummer, die die meisten anderen Engines zeigen. |
| `website_mismatch` | Die Website des Eintrags ist eine andere Website als `place.website` oder, ohne diese Angabe, als die Website, die die meisten anderen Engines zeigen. |
| `location_mismatch` | Die Markierung des Eintrags liegt mehr als 300 m von `place.location` entfernt. |
| `other_business_record` | Der Eintrag gehört wahrscheinlich zu einem anderen Betrieb am Standort des Geschäfts: Telefonnummer und Website weichen beide ab, oder ChatGPT hat ihn über die Adresse gefunden und eine der beiden weicht ab. |
| `closed_permanently`, `closed_temporarily` | ChatGPT zeigt den Ort als geschlossen. |

Eine Nummer, die alle Filialen einer Kette angeben, etwa eine gebührenfreie Nummer, wird nicht verglichen.

### `summary` und `credits`

| Feld | Beschreibung |
| - | - |
| `summary.foundIn` | Engines, die das Geschäft zeigten. |
| `summary.notFoundIn` | Engines, deren Antworten ohne das Geschäft endeten. |
| `summary.failed` | Engines, bei denen beide Fragen fehlschlugen. |
| `summary.pending` | Engines, die noch antworten und das Geschäft noch nicht gezeigt haben. |
| `summary.differences[]` | Wo die Einträge der Engines voneinander abweichen. `field` ist `name`, `phone`, `website` oder `location`, und `values[]` listet jeden `value` mit den `engines`, die ihn zeigen. Ein `location`-Eintrag erscheint, wenn zwei Markierungen mehr als 300 m auseinanderliegen, und trägt `spreadMeters`, den größten Abstand zwischen ihnen. |
| `credits` | Die bisher für die Fragen der Abfrage berechneten Credits. |

`lookup.status` ist `PROCESSING`, bis alle Engines enden, danach `COMPLETED`. Das Ergebnis wird bei jedem Lesen aus den gespeicherten Antworten bewertet, und eine Abfrage ist 24 Stunden nach dem Ende ihrer Tasks lesbar.

## Abfrage erneut senden

Jede Frage ist ein Task mit dem Schlüssel `{lookup id}:{engine}:{ask}`, etwa `canlis-2026-10:GEMINI:2`. Senden Sie dieselbe Anfrage mit demselben `idempotencyKey` erneut, gibt die Abfrage ihre vorhandenen Tasks zurück und sendet die Fragen, die noch keinen Task haben, etwa solche, die mangels Credits abgelehnt wurden. Dieselbe id mit einem anderen Geschäft, Land oder einer anderen Engine-Liste liefert `409 RESOURCE_ALREADY_EXISTS` und erstellt nichts. Um das Geschäft später erneut abzufragen, verwenden Sie einen neuen `idempotencyKey`.

## Parallelität des Tarifs

Jede Frage zählt als ein Task für das Parallelitätslimit Ihres Tarifs. Eine Abfrage startet so viele Fragen, wie Ihr Tarif Platz hat, die übrigen warten in `tasks[]` mit `status: "PENDING"`:

```json theme={"theme":"css-variables"}
{ "engine": "GEMINI", "ask": 1, "success": true, "status": "PENDING" }
```

Eine wartende Frage startet von selbst, sobald Ihre laufenden Tasks fertig sind, innerhalb einer Minute oder beim nächsten Lesen der Abfrage. So führt eine einzige Anfrage die ganze Abfrage aus. Im Free-Tarif mit 2 parallelen Tasks laufen zwei Fragen gleichzeitig, und eine Abfrage dauert einige Minuten. Bezahlte Tarife beginnen bei 50 parallelen Tasks, sodass eine ganze Abfrage auf einmal startet, solange Ihr Konto Kapazität frei hat. Fragen warten auch, solange die Warteschlange einer Engine voll ist oder der Schlüssel sein tägliches Credit-Limit erreicht hat. Der Preis einer Frage wird reserviert, wenn sie startet. Wird der Schlüssel, der die Abfrage gesendet hat, vorher widerrufen oder läuft er ab, enden die wartenden Fragen als `FAILED` mit `API_KEY_INACTIVE` und kosten 0. Siehe [Credits und Limits](/de/concepts/credits-and-limits.md#parallelität-des-tarifs).

## Fehler und Abrechnung

Eine Abfrage der Standard-Engines des Landes kostet 10 Credits. Jede Frage zahlt ihren Anteil: 1 Credit für jede der 10 Fragen in `KR` und 1,25 für jede der 8 Fragen anderswo. Eine Abfrage weniger Engines zahlt die Fragen, die sie sendet. Der Preis jeder Frage wird beim Einreichen reserviert und bei Abschluss berechnet, und eine fehlgeschlagene Frage kostet 0. Siehe [Credits und Limits](/de/concepts/credits-and-limits.md).

### Beim Einreichen abgelehnt

| Status | Code | Ursache |
| - | - | - |
| `400` | `VALIDATION_ERROR` | Der Body ist kein gültiges JSON, ein Feld fehlt oder ist ungültig, ein unbekanntes Feld oder `webhook` wurde gesendet, oder `NAVER_AI_TAB` wurde außerhalb von `KR` gefragt. `details` nennt das Feld. |
| `409` | `RESOURCE_ALREADY_EXISTS` | Der `idempotencyKey` bezeichnet eine Abfrage eines anderen Geschäfts, Lands oder einer anderen Engine-Liste. |

Werden alle Fragen abgelehnt, ist die erste Ablehnung die Antwort, mit ihrem eigenen Status, etwa `402 INSUFFICIENT_CREDITS` oder `403 KEY_SCOPE_DENIED`, und es wird nichts erstellt. Werden einige Fragen angenommen, ist die Antwort `200`, und jede abgelehnte Frage trägt ihren `error` in `tasks[]`:

```json theme={"theme":"css-variables"}
{
  "engine": "GOOGLE",
  "ask": 2,
  "success": false,
  "error": {
    "code": "INSUFFICIENT_CREDITS",
    "message": "insufficient credits (need 1.25)",
    "timestamp": "2026-10-20T09:00:00.000Z"
  }
}
```

### Eine Abfrage lesen

`GET /v1/place-lookup/{id}` liefert `404 RESOURCE_NOT_FOUND` für eine id, die Ihr Konto nicht verwendet hat, und für eine Abfrage, deren Tasks das 24-Stunden-Fenster überschritten haben. Eine fehlgeschlagene Frage zeigt `status: "FAILED"` in `via[]` und einen `error`, der mit seinem Code beginnt, etwa `ENGINE_NO_RESULT`. Die Codes sind die der Tasks dieser Engine, und eine wartende Frage, die vor ihrem Start endet, trägt `API_KEY_INACTIVE` oder `INSUFFICIENT_CREDITS`. Siehe [Fehler](/de/concepts/errors.md).

## Nächste Schritte

> **[ChatGPT](/de/engines/chatgpt.md)**
>
> Die Ortskarten, die ChatGPT zeigt, in `map`.

> **[Batches und Raster](/de/concepts/bulk-submission.md)**
>
> Stellen Sie einen Prompt von jedem Punkt eines Rasters um ein Geschäft.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.