Skip to content

The Listing Info API returns a business listing as it appears right now on any of 100+ platforms: name, address, phone, website, photos, categories, price range, rating and review count. The data comes back in the same response, with no background jobs or waiting.

  • AccessAPI key
  • Platforms133 supported
  • EndpointGET /listing/{network}?slug=my-listing-slug

Key facts

  • Synchronous: results in the same call
  • Detailed rating breakdown where the platform provides it (per criteria and distribution)
  • Same standardized format on every platform
  • 50 credits per listing

How it works

Up and running in three steps

  1. 1

    Send the listing

    Pass the platform and the listing's identifier. Use Listing Lookup to find it from a business name and address.

  2. 2

    Get it back instantly

    The listing's current details come back in the same response, with no background job to wait for.

  3. 3

    Use one format everywhere

    Every platform returns the same fields, so one integration covers them all.

Example

Request and response

GET /listing/{network}?slug=my-listing-slug
cURL
  • cURL
  • .Net
  • Go
  • Java
  • Node.js
  • PHP
  • Python
  • Ruby
curl --location 'https://api.zembra.io/listing/google?slug=my-listing-slug' \
--header 'Authorization: Bearer {token}'
var client = new HttpClient();
var request = new HttpRequestMessage(HttpMethod.Get, "https://api.zembra.io/listing/google?slug=my-listing-slug");
request.Headers.Add("Authorization", "Bearer {token}");
var response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
Console.WriteLine(await response.Content.ReadAsStringAsync());
package main

import (
  "fmt"
  "net/http"
  "io/ioutil"
)

func main() {

  url := "https://api.zembra.io/listing/google?slug=my-listing-slug"
  method := "GET"

  client := &http.Client {
  }
  req, err := http.NewRequest(method, url, nil)

  if err != nil {
    fmt.Println(err)
    return
  }
  req.Header.Add("Authorization", "Bearer {token}")

  res, err := client.Do(req)
  if err != nil {
    fmt.Println(err)
    return
  }
  defer res.Body.Close()

  body, err := ioutil.ReadAll(res.Body)
  if err != nil {
    fmt.Println(err)
    return
  }
  fmt.Println(string(body))
}
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = RequestBody.create(mediaType, "");
Request request = new Request.Builder()
  .url("https://api.zembra.io/listing/google?slug=my-listing-slug")
  .method("GET", body)
  .addHeader("Authorization", "Bearer {token}")
  .build();
Response response = client.newCall(request).execute();
var myHeaders = new Headers();
myHeaders.append("Authorization", "Bearer {token}");

var requestOptions = {
  method: 'GET',
  headers: myHeaders,
  redirect: 'follow'
};

fetch("https://api.zembra.io/listing/google?slug=my-listing-slug", requestOptions)
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log('error', error));
<?php
$client = new Client();
$headers = [
  'Authorization' => 'Bearer {token}'
];
$request = new Request('GET', 'https://api.zembra.io/listing/google?slug=my-listing-slug', $headers);
$res = $client->sendAsync($request)->wait();
echo $res->getBody();
import requests

url = "https://api.zembra.io/listing/google?slug=my-listing-slug"

payload = {}
headers = {
  'Authorization': 'Bearer {token}'
}

response = requests.request("GET", url, headers=headers, data=payload)

print(response.text)
require "uri"
require "net/http"

url = URI("https://api.zembra.io/listing/google?slug=my-listing-slug")

https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true

request = Net::HTTP::Get.new(url)
request["Authorization"] = "Bearer {token}"

response = https.request(request)
puts response.read_body

Response

{
    "message": "Listing found on Google",
    "data": {
        "address": {
            "street": "5621 Main St",
            "city": "Mallorca",
            "region": "QC",
            "postalCode": "78128",
            "country": "US"
        },
        "aliases": [
            "my-listing-1",
            "my-first-listing"
        ],
        "categories": [
            "Restaurant",
            "Fast Food"
        ],
        "formattedAddress": "5621 Main St, Mallorca, QC 78128, US",
        "globalRating": 4.5,
        "id": "ChIJV9OJxsOq3oARnyGzSXY0ym8",
        "lastCrawled": "2023-01-01T00:00:00Z",
        "lastUpdated": "2023-01-01T00:00:00Z",
        "link": "https://my.zembratech.com/dashboard/review-page/insights/MWJmZTc5MDZjMzg5OGI3OGMyNjJiODNjOGJjMWI3Y2Q",
        "name": "My Google Business",
        "network": "google",
        "phone": "(210) 456-0987",
        "photos": [
            "https://media2.trover.com/T/5a5eae0184b8636d6b0385f0/fixedw-1.jpg",
            "https://media2.trover.com/T/5a5eae0184b8636d6b0385f0/fixedw-2.jpg"
        ],
        "priceRange": "$$$",
        "profileImage": "https://media2.trover.com/T/5a5eae0184b8636d6b0385f0/fixedw.jpg",
        "ratingBreakdown": {
            "overall": 8.4,
            "perCriteria": [
                {
                    "criteria": "Overall",
                    "rating": 8.4
                },
                {
                    "criteria": "Cleanliness",
                    "rating": 8.9
                },
                {
                    "criteria": "Facilities",
                    "rating": 8.3
                },
                {
                    "criteria": "Location",
                    "rating": 8.7
                },
                {
                    "criteria": "Service",
                    "rating": 8.7
                },
                {
                    "criteria": "Value for money",
                    "rating": 8.2
                }
            ],
            "ratingDistribution": [
                {
                    "rating": "9+ Exceptional",
                    "count": 135
                },
                {
                    "rating": "8-9 Excellent",
                    "count": 66
                },
                {
                    "rating": "7-8 Very Good",
                    "count": 32
                },
                {
                    "rating": "6-7 Good",
                    "count": 24
                },
                {
                    "rating": "<6 Below Expectation",
                    "count": 11
                }
            ]
        },
        "rawData": [],
        "reviewCount": {
            "native": {
                "total": 6320,
                "active": 5986,
                "hidden": 334
            },
            "available": {
                "total": 6320,
                "active": 5986,
                "hidden": 334
            }
        },
        "slug": "my-listing-slug",
        "url": "https://maps.google.com/?cid=16256511492469774330",
        "website": "https://my-business.com"
    }
}
{
    "message": "Invalid slug [not-a-real-listing-slug]"
}
{
    "message": "Invalid bearer token"
}
{
    "message": "Cannot process request: balance too low!"
}
{
    "message": "Requested network [Facebook] is not enabled for your account"
}
{
    "message": "Listing not found. Maybe not a valid business."
}

Supported platforms

133 platforms, one format#

Use cases

What teams build with it

Listing management

Check that names, addresses and phone numbers are consistent across platforms.

Data enrichment

Add ratings, review counts, photos and categories to your CRM or directory.

Rating widgets

Display a business's up-to-date rating from each platform.

FAQ

Common questions

Is the data live?

Yes. The listing is read when you call the API, not from an old cache.

Which fields are returned?

Name, address, phone, website, photos, categories, price range, global rating, review counts and, where the platform provides it, a detailed rating breakdown.

Can I test without spending credits?

Yes. The sandbox returns realistic dummy data and never touches your balance.

Pay only for what you use

Every Zembra service is paid with the same credits, and the more you use, the less each credit costs.

Start today for free

Create an account and get 10,000 free credits to try the Listing Info API and every other Zembra service.