/api/v4/listings/scans/{scanId}Obtener un listings scan
Devuelve un listings scan con su resumen y resultados por directorio, parciales mientras el escaneo sigue en curso.
Parámetros
Ruta
| Nombre | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| scanId | string | obligatorio | The scan `id` returned by POST /listings/scans or listed by GET /listings/scans. |
Respuestas
200A completed scan. The real response lists every directory in `results`, usually around 60. This example is trimmed to six entries, one of each kind described below.
{ "data": { "listingScan": { "id": "TGlzdGluZ1NjYW46Mzk0YTRhNWMtZjcwMy00NjZiLTg2NjAtMDU4MTlmNDhkZjMz", "status": "COMPLETED", "source": "DIRECTORY_SEARCH", "locationId": null, "resultsAsOf": "2026-11-05T07:01:51Z", "createdAt": "2026-11-05T07:01:08Z", "startedAt": "2026-11-05T07:01:11Z", "completedAt": "2026-11-05T07:01:51Z", "business": { "name": "Joe's Pizza", "street": "7 Carmine Street", "city": "New York", "stateIso": "NY", "postalCode": "10014", "countryIso": "US", "phone": "+12123661182" }, "summary": { "total": 62, "found": 21, "accurate": 18, "inaccurate": 2, "notFound": 41, "pending": 0, "unavailable": 0 }, "failure": null, "results": [ { "directory": { "id": 1, "name": "Google Maps", "url": "maps.google.com" }, "status": "FOUND", "accurate": true, "accuracySource": "DIRECTORY_MATCH", "accuracy": { "name": { "status": "ACCURATE", "message": null }, "address": { "status": "ACCURATE", "message": null }, "phone": { "status": "ACCURATE", "message": null } }, "listing": { "name": "Joe's Pizza", "street": "7 Carmine Street", "city": "New York", "state": "NY", "postalCode": "10014", "country": "US", "fullAddress": "7 Carmine St, New York, NY 10014, USA", "phones": [ "+1 212-366-1182" ], "url": "https://maps.google.com/?cid=4877966330195296067" }, "syncStatus": null }, { "directory": { "id": 2, "name": "Yelp", "url": "yelp.com" }, "status": "FOUND", "accurate": true, "accuracySource": "DIRECTORY_MATCH", "accuracy": { "name": { "status": "ACCURATE", "message": null }, "address": { "status": "ACCURATE", "message": null }, "phone": { "status": "ACCURATE", "message": null } }, "listing": { "name": "Joe's Pizza", "street": "7 Carmine St", "city": "New York", "state": "NY", "postalCode": "10014", "country": "US", "fullAddress": "7 Carmine St, New York, NY 10014", "phones": [ "+12123661182" ], "url": "https://www.yelp.com/biz/joes-pizza-new-york-4" }, "syncStatus": null }, { "directory": { "id": 374, "name": "Map Quest", "url": "www.mapquest.com" }, "status": "FOUND", "accurate": null, "accuracySource": "DIRECTORY_MATCH", "accuracy": { "name": { "status": "ACCURATE", "message": null }, "address": { "status": "MISSING", "message": "Not shown" }, "phone": { "status": "MISSING", "message": "Not shown" } }, "listing": { "name": "Joe's Pizza", "street": "7 Carmine St", "city": "New York", "state": "NY", "postalCode": "10014", "country": null, "fullAddress": "7 Carmine St, New York, NY 10014, US", "phones": [], "url": null }, "syncStatus": null }, { "directory": { "id": 352, "name": "YellowPages", "url": "www.yellowpages.com" }, "status": "NOT_FOUND", "accurate": null, "accuracySource": "DIRECTORY_MATCH", "accuracy": null, "listing": null, "syncStatus": null }, { "directory": { "id": 50, "name": "Judys Book", "url": "judysbook.com" }, "status": "FOUND", "accurate": false, "accuracySource": "DIRECTORY_MATCH", "accuracy": { "name": { "status": "ACCURATE", "message": null }, "address": { "status": "ACCURATE", "message": null }, "phone": { "status": "INACCURATE", "message": "Phone number does not match" } }, "listing": { "name": "Joe's Pizza", "street": "7 CARMINE ST", "city": "New York", "state": "NY", "postalCode": "10014", "country": null, "fullAddress": "7 CARMINE ST, New York, NY 10014", "phones": [ "8553685707" ], "url": "https://www.judysbook.com/Joes-Pizza-Uncategorized-newyork-r29271293.htm" }, "syncStatus": null }, { "directory": { "id": 350, "name": "Uber", "url": "uber.com" }, "status": "FOUND", "accurate": true, "accuracySource": "DIRECTORY_MATCH", "accuracy": { "name": { "status": "ACCURATE", "message": null }, "address": { "status": "ACCURATE", "message": null }, "phone": { "status": "ACCURATE", "message": null } }, "listing": { "name": "Joe's Pizza", "street": "7 Carmine Street", "city": "New York", "state": "NY", "postalCode": "10014", "country": "US", "fullAddress": "7 Carmine St, New York, NY 10014, USA", "phones": [ "+1 212-366-1182" ], "url": null }, "syncStatus": null } ] } }}200A failed scan. `failure` has the code and message, and `results` is empty.
{ "data": { "listingScan": { "id": "TGlzdGluZ1NjYW46ZGVkZTNhOTgtNDA5Ni00ZDI3LWJlMjUtMzY3YTYxOTk4Y2Y1", "status": "FAILED", "source": "DIRECTORY_SEARCH", "locationId": null, "resultsAsOf": null, "createdAt": "2026-11-03T08:53:18Z", "startedAt": null, "completedAt": "2026-11-03T08:53:18Z", "business": { "name": "Franklin Barbecue", "street": "900 E 11th St", "city": "Austin", "stateIso": "TX", "postalCode": "78702", "countryIso": "US", "phone": "+15126531187" }, "summary": { "total": 0, "found": 0, "accurate": 0, "inaccurate": 0, "notFound": 0, "pending": 0, "unavailable": 0 }, "failure": { "code": "SY83010", "message": "SY83010: Listing scans are temporarily unavailable, try again later", "field": null }, "results": [] } }}401Unauthenticated, missing or invalid API key.
404No scan with that ID on this account, or the scan is older than 90 days (`SY83005`).
{ "data": { "listingScan": null }, "errors": [ { "message": "SY83005: Listing scan not found" } ]}429Rate limit exceeded. Retry after the `Retry-After` header value.
Devuelve un análisis creado por POST /listings/scans, con su summary y una entrada results[] por cada directorio. Mientras el análisis está en curso, results contiene lo que se ha comprobado hasta el momento, y algunas entradas pueden seguir en PENDING. Cuando status es COMPLETED, los resultados son definitivos.
Caso de uso: consultar el informe cuando llega el webhook. El evento listing_scan.completed ya incluye el análisis completo, por lo que la mayoría de las integraciones no necesitan realizar ninguna consulta. Usa este endpoint para volver a consultar un análisis más adelante, mostrarlo en un panel o recuperarlo si no se recibió un webhook.
Caso de uso: realizar consultas periódicas cuando los webhooks no están disponibles. Consulta el análisis cada 15 segundos hasta que status sea COMPLETED o FAILED. No lo consultes con más frecuencia: cada consulta cuenta para tu límite de solicitudes. Los análisis se conservan durante 90 días; después de ese plazo, este endpoint devuelve 404 con SY83005.
Estados del análisis
El objeto del análisis
summary.found cuenta los directorios en los que el negocio tiene una ficha. De ellos, accurate cuenta aquellos cuyos datos coinciden y inaccurate aquellos cuyos datos no coinciden. Una ficha encontrada que se haya confirmado sin una comprobación campo por campo se incluye solo en found, por lo que la suma de accurate y inaccurate puede ser inferior a found.
Un resultado
status del resultado
accurate
accuracy por campo. Cada uno de los campos name, address y phone es un objeto con un campo status cuyo valor es ACCURATE, INACCURATE o MISSING, y un campo message que explica una diferencia, por ejemplo, Phone number does not match. MISSING significa que el directorio no muestra ese dato, por ejemplo, No phone number on the listing. Usa listing para mostrar los datos que realmente contiene el directorio junto a los que esperabas.
syncStatus. En un análisis LOCATION_LISTINGS, la conclusión se obtiene de la ficha real de tu ubicación en lugar de una comparación. syncStatus es el estado de esa ficha (SYNCED, COMPLETED, IN_PROGRESS, PENDING_APPROVAL, REQUIRING_ACTION, FAILED, AVAILABLE o CANNOT_SUBMIT), con los mismos valores que GET /locations/{locationId}/listings/premium. SYNCED y COMPLETED se consideran exactos.
Notas.
- Un análisis solo se devuelve a la cuenta que lo creó. Para cualquier otro ID, el endpoint devuelve
404conSY83005. - Algunos directorios muestran datos de otro directorio. Por ejemplo, Uber, Waze y Lyft muestran datos de Google Maps, y CopilotAI muestra datos de Bing. Su resultado refleja el del directorio de origen y no tiene un
urlde ficha propio. - No interpretes
UNAVAILABLEcomo un resultado negativo: no se ha podido comprobar el directorio, por lo que la respuesta se desconoce. - Cuando el análisis es una copia
RECENT_SCAN,resultsAsOfindica cuándo se recopilaron los datos ycreatedAtindica cuándo se copiaron a tu cuenta.
curl -X GET 'https://listingsapi.com/api/v4/listings/scans/<scanId>' \ -H "Authorization: API $LISTINGSAPI_KEY"