# Local Business Intelligence API — turn a business name and location into a place profile with multi-source reviews, website health and legitimacy signals

> name+location ‖ place_query → matched place (Google Maps) + multi-source review presence + website health + indexed presence + negative-news + legitimacy signal list, with an honest coverage_note + per-group provenance.
> ReefAPI engine `enrich-local` · 2 endpoints · clean JSON, no scraping or browsers to manage.

## How to call
- **Endpoint:** `POST https://api.reefapi.com/enrich-local/v1/<action>` with a JSON body.
- **Auth:** header `x-api-key: <YOUR_REEFAPI_KEY>` — create one free (1,000 credits, no card): https://reefapi.com/signup
- **Response (every call):** `{ ok: boolean, data: ..., meta: { record_count, credits, ... }, error: { code, message } }` — branch on `ok`. Failed or blocked calls are free.
- **One key + one shared credit pool** across every ReefAPI API. Per-call credits are listed on each endpoint below.
- **Use it from an AI agent (MCP):** connect `https://api.reefapi.com/mcp` (remote streamable-http, `Authorization: Bearer <key>`) and your assistant can call these actions directly.

## Endpoints

### POST /enrich-local/v1/business_lookup — 8 credits
name+location ‖ place_query → matched place (Google Maps) + multi-source review presence + website health + indexed presence + negative-news + legitimacy signal list, with an honest coverage_note + per-group provenance.

**Parameters:**
- `name` (string, optional) — Business name to look up. Pair with `location` (or lat/lng) for accurate chain-branch matching. Provide this+location OR `place_query`.
- `location` (string, optional) — City / neighborhood / address the business is in. Disambiguates same-named branches (used with `name`).
- `place_query` (string, optional) — Free-text place query (name + place hint in one string). Alternative to name+location.
- `lat` (number, optional) — Latitude to geo-bias the match around — strongest branch disambiguator (pair with lng).
- `lng` (number, optional) — Longitude to geo-bias the match around (pair with lat).
- `country` (string, optional) — ISO-3166 country hint (us, gb, tr…) — improves region-source routing (Yelp=US/CA, Tripadvisor=travel) and the coverage_note.
- `yelp_enc_biz_id` (string, optional) — Optional Yelp business identifier (the encrypted ID, not the URL slug). This is a shortcut: the engine already resolves a business name to its Yelp ID automatically — pass this only when you already have it and want to skip the lookup step.
- `include` (array, optional) — Run ONLY these enrichment groups (cost control). Default: all. `place` (Google Maps) is always resolved — it is the anchor. [one of: reviews, website, presence, news, legitimacy]
- `exclude` (array, optional) — Drop these enrichment groups from the default set. [one of: reviews, website, presence, news, legitimacy]

**Returns:** place{name,address,phone,phone_display,website,domain,category,categories,rating,review_count,latitude,longitude,maps_url,hours_today}, match{match_confidence,name_similarity,distance_km,geo_validated,alternatives_considered,runner_up}, review_presence{google,yelp,tripadvisor,trustpilot — each {found, rating, review_count, sample[]}}, website{domain,domain_age_days,ssl_active,registrar,dns_summary,website_alive}, presence{indexed,top_results[]}, negative_news{found,articles[]}, legitimacy{signals[],unknowns[],coverage_note,disclaimer}, freshness; provenance{per-group status+engine+missing_reason}; meta.extra.subcalls[] (contributing sources)

**Example request body:**
```json
{
  "name": "Katz's Delicatessen",
  "location": "Manhattan",
  "lat": 40.7223,
  "lng": -73.9874,
  "include": [
    "website"
  ]
}
```

### POST /enrich-local/v1/batch — 8 credits
enrich up to 10 businesses in one call (lead-list use-case; per-item ok/error, cache-first).

**Parameters:**
- `businesses` (array, required) — Up to 10 businesses (each {name,location} / {place_query} / {name,lat,lng}). Lead-list enrichment; per-item ok/error, cache-first.
- `include` (array, optional) — Run ONLY these enrichment groups (cost control). Default: all. `place` (Google Maps) is always resolved — it is the anchor. [one of: reviews, website, presence, news, legitimacy]
- `exclude` (array, optional) — Drop these enrichment groups from the default set. [one of: reviews, website, presence, news, legitimacy]

**Returns:** results[] (one business_lookup payload or {ok:false,error} per input), count, ok_count

**Example request body:**
```json
{
  "businesses": [
    {
      "name": "b0",
      "location": "x"
    },
    {
      "name": "b1",
      "location": "x"
    },
    {
      "name": "b2",
      "location": "x"
    },
    {
      "name": "b3",
      "location": "x"
    },
    {
      "name": "b4",
      "location": "x"
    },
    {
      "name": "b5",
      "location": "x"
    },
    {
      "name": "b6",
      "location": "x"
    },
    {
      "name": "b7",
      "location": "x"
    },
    {
      "name": "b8",
      "location": "x"
    },
    {
      "name": "b9",
      "location": "x"
    },
    {
      "name": "b10",
      "location": "x"
    }
  ]
}
```

## More
- Try it live, no code: https://reefapi.com/playground?engine=enrich-local
- Human docs page: https://reefapi.com/docs/enrich-local
- Every ReefAPI API in one file (for your AI): https://reefapi.com/llms-full.txt
