# App & SaaS Reputation API — resolve an app by name, store URL or domain into a fused reputation profile (store ratings, Trustpilot, TrustRadius, GitHub, Product Hunt, live status and news)

> name|store-URL|domain → entity-resolved app/SaaS reputation: store ratings + Trustpilot + GitHub + Product Hunt (basic) — see app_reputation_rich for the full fan-out (review samples + TrustRadius + status + news)
> ReefAPI engine `enrich-app` · 3 endpoints · clean JSON, no scraping or browsers to manage.

## How to call
- **Endpoint:** `POST https://api.reefapi.com/enrich-app/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-app/v1/app_reputation — 5 credits
name|store-URL|domain → entity-resolved app/SaaS reputation: store ratings + Trustpilot + GitHub + Product Hunt (basic) — see app_reputation_rich for the full fan-out (review samples + TrustRadius + status + news)

**Parameters:**
- `query` (string, required) — App name, store URL/id, OR SaaS domain. PREFER a store URL or app id (apps.apple.com/.../id1232780281 or play.google.com/store/apps/details?id=notion.id) — it resolves the EXACT app deterministically. A SaaS domain (notion.so) is next-best (anchors Trustpilot/TrustRadius/GitHub). A bare name ('Notion') triggers a search + fuzzy match with a match_confidence score and surfaces same-name rivals in entity.candidates.
- `country` (string, optional, default "us") — Store region (ISO-2) for Apple/Play ratings & reviews. Defaults to us. Use tr/jp/de/… for regional store data.
- `stores` (array, optional) — Which app stores to query. Default: both. [one of: apple, google_play]
- `include` (array, optional) — Run ONLY these field groups (cost control). `entity` is always computed. Default: all groups of this action. [one of: stores, reviews_sample, trust, developer, status, news, launch]
- `exclude` (array, optional) — Drop these field groups from this action's default set. [one of: stores, reviews_sample, trust, developer, status, news, launch]
- `trustradius_slug` (string, optional) — Optional explicit TrustRadius product slug. When omitted it is derived from the brand; provide it when the brand stem differs from the TrustRadius URL slug.

**Returns:** entity{query,input_kind,resolved_name,match,match_confidence,domain,store_refs[],developer,candidates[] (same-name rivals)}, stores{apple{app_id,name,developer,rating,rating_count,...},google_play{}}, trust{trustpilot{found,name,domain,trust_score,stars,reviews_count,categories}}, developer{github_org|top_repos}, launch{product_hunt}, summary{reputation_index,signals[]}; provenance{per-group status + engine + coverage_note (B2C store-rich/Trustpilot-thin vs B2B SaaS the reverse; G2/Capterra explicitly out of scope)}; meta.extra.subcalls[]

**Example request body:**
```json
{
  "query": "https://apps.apple.com/us/app/notion/id1232780281",
  "include": [
    "stores"
  ]
}
```

### POST /enrich-app/v1/app_reputation_rich — 10 credits
everything in app_reputation + a recent store-review sample + TrustRadius B2B reviews + vendor live status/incidents + recent news mentions

**Parameters:**
- `query` (string, required) — App name, store URL/id, OR SaaS domain. PREFER a store URL or app id (apps.apple.com/.../id1232780281 or play.google.com/store/apps/details?id=notion.id) — it resolves the EXACT app deterministically. A SaaS domain (notion.so) is next-best (anchors Trustpilot/TrustRadius/GitHub). A bare name ('Notion') triggers a search + fuzzy match with a match_confidence score and surfaces same-name rivals in entity.candidates.
- `country` (string, optional, default "us") — Store region (ISO-2) for Apple/Play ratings & reviews. Defaults to us. Use tr/jp/de/… for regional store data.
- `stores` (array, optional) — Which app stores to query. Default: both. [one of: apple, google_play]
- `include` (array, optional) — Run ONLY these field groups (cost control). `entity` is always computed. Default: all groups of this action. [one of: stores, reviews_sample, trust, developer, status, news, launch]
- `exclude` (array, optional) — Drop these field groups from this action's default set. [one of: stores, reviews_sample, trust, developer, status, news, launch]
- `trustradius_slug` (string, optional) — Optional explicit TrustRadius product slug. When omitted it is derived from the brand; provide it when the brand stem differs from the TrustRadius URL slug.

**Returns:** app_reputation payload + reviews_sample{apple[],google_play[]}, trust.trustradius{found,name,rating_avg,review_count,sample[]}, status{vendor,indicator,is_operational,active_incidents}, news{articles[],count}

**Example request body:**
```json
{
  "query": "https://apps.apple.com/us/app/notion/id1232780281"
}
```

### POST /enrich-app/v1/batch — 4 credits
reputation for up to 10 apps/domains in one call (basic groups, cache-first, per-item ok/error)

**Parameters:**
- `queries` (array, required) — Up to 10 app names / store URLs / domains (array or comma-separated). Each is enriched like app_reputation (basic groups, cache-first), with per-item ok/error.
- `country` (string, optional, default "us") — Store region (ISO-2) for Apple/Play ratings & reviews. Defaults to us. Use tr/jp/de/… for regional store data.
- `stores` (array, optional) — Which app stores to query. Default: both. [one of: apple, google_play]
- `include` (array, optional) — Run ONLY these field groups (cost control). `entity` is always computed. Default: all groups of this action. [one of: stores, reviews_sample, trust, developer, status, news, launch]
- `exclude` (array, optional) — Drop these field groups from this action's default set. [one of: stores, reviews_sample, trust, developer, status, news, launch]

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

**Example request body:**
```json
{
  "queries": [
    "app0",
    "app1",
    "app2",
    "app3",
    "app4",
    "app5",
    "app6",
    "app7",
    "app8",
    "app9",
    "app10"
  ]
}
```

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