# Phone Number Validation API — validate and parse phone numbers: validity, international and national format, region, line type, carrier and timezone

> validate ONE number → validity + format/region/line-type/carrier/timezone/location
> ReefAPI engine `phone-validate` · 2 endpoints · clean JSON, no scraping or browsers to manage.

## How to call
- **Endpoint:** `POST https://api.reefapi.com/phone-validate/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 calls are free except verified SHEIN NOT_FOUND on product/detail and price (4 credits).
- **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). Send the key as `Authorization: Bearer <key>`, or put it in the URL (`?key=<key>`) when the client has no header field, as ChatGPT does.

## Endpoints

### POST https://api.reefapi.com/phone-validate/v1/validate — 1 credit
validate ONE number → validity + format/region/line-type/carrier/timezone/location

**Parameters:**
- `number` (string, required) — The phone number to validate. Best supplied in E.164 (+countrycode…); a national number works too if you also pass `region`.
- `region` (string, optional) — Default ISO-3166 alpha-2 region (e.g. TR, US, DE, GB) used to parse NATIONAL-format numbers that have no +country-code. Ignored for E.164 input. Case-insensitive.
- `lang` (string, optional, default "en") — Language for the carrier name + geocoded location text (e.g. en, de, fr, es). Falls back to English.

**Returns:** is_valid, is_possible, parse_error, e164/national_format/international_format/rfc3966, country_code, region_code, national_number, line_type (mobile/fixed_line/voip/toll_free/…), carrier, location, timezones[]

**Example request body:**
```json
{
  "number": "+90 532 123 4567"
}
```

### POST https://api.reefapi.com/phone-validate/v1/batch — 2 credits
validate up to 100 numbers in one call (shared default region)

**Parameters:**
- `numbers` (array, required) — Up to 100 phone numbers. A JSON array, OR a comma/newline-separated string. Each is validated independently (a bad entry → is_valid=false, never fails the call).
- `region` (string, optional) — Default ISO-3166 alpha-2 region (e.g. TR, US, DE, GB) used to parse NATIONAL-format numbers that have no +country-code. Ignored for E.164 input. Case-insensitive.
- `lang` (string, optional, default "en") — Language for the carrier name + geocoded location text (e.g. en, de, fr, es). Falls back to English.

**Returns:** count, valid_count, possible_count, results[] (each the same record as validate)

**Example request body:**
```json
{
  "numbers": [
    "+90 532 123 4567",
    "+90 212 245 5555",
    "nonsense"
  ]
}
```

## At scale
- **Volume:** 5M+ requests a day, measured at 60 requests a second across the fleet with no
  central bottleneck. Per-key limits are raised for high-volume accounts; volume pricing on request.
- **Missing a source:** tell us a site we do not cover and it becomes an engine. A customer asked
  for bestprice.gr on 21 Sep 2026 and it was in the catalog on 22 Sep.
- **Support:** 2 minute median time from a question in the live chat to the first answer. Setup
  help included, no support tier to buy.
- **One key, one credit pool** across every API. No per-site plans, no separate subscriptions.

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