Endpoint

MethodGET
URLhttps://areacodecheck.com/api/phone/{number}
AuthNone required for the free per-IP allowance. An IPNOVA API key (free account at api.ipnova.com) applies your plan allowance instead: send it as the X-Api-Key header or the ?key= query parameter. Keyed responses carry X-Credits-Remaining and X-Credits-Used.
Rate limit100 requests a day and 30 a minute, per IP (see X-RateLimit-Remaining)
CORSAccess-Control-Allow-Origin: *
PrivacyNumbers are never stored or logged; responses are no-store

Plans

One key. Twelve APIs.

A free IPNOVA API account gives you 5,000 lookups a month across every API below, 60 a minute, no card, for evaluation and small projects. Paid plans from $19 a month for production volumes, with a commercial licence and a hard cap instead of overage billing.

Card BINVINSWIFT/BICIBANHS tariffDisposable emailIP dataPhoneHolidaysMAC vendorPostal codeAirport
Create your free key

Takes a minute. Send it as X-Api-Key or ?key=.

Without a key this API answers 100 requests a day per IP address, for evaluation and personal use. Try it: curl https://areacodecheck.com/api/phone/14155552671

Example Request

curlcurl "https://areacodecheck.com/api/phone/+14155552671"
JavaScriptconst r = await fetch('https://areacodecheck.com/api/phone/%2B14155552671').then(r => r.json());
PHP$r = json_decode(file_get_contents('https://areacodecheck.com/api/phone/14155552671'), true);
Pythonr = requests.get('https://areacodecheck.com/api/phone/+14155552671').json()

Numbers can be sent with or without the + (URL-encode it as %2B when in doubt). Bare 10-digit numbers are treated as North American.

Response Fields

FieldTypeDescription
data.inputstringThe number as received, unmodified
data.e164stringThe number in E.164 format
data.country_code / data.countrystringCalling code and country / region name
data.region_isostringISO 3166-1 alpha-2 of the primary region
data.shared_notestring|nullSet when the calling code is shared by several countries or territories (e.g. NANP's +1); null otherwise
data.area_code / area_location / area_countrystring|nullNANP area code details when applicable
data.timezonestring|nullPrimary IANA timezone of the area code
data.nanp_validboolean|nullWhether a North American number matches the valid format
pagestring|nullHuman-readable guide page for the detected code

Errors

Every non-200 response uses the same envelope: success: false, an error flag, a machine-readable reason, a human message, and a docs link back to this page.

StatusReasonMeaning
400invalid_inputInput is not number-shaped
401invalid_keyThe supplied API key is unknown or revoked
404unknown_endpointPath under /api/ does not match a published endpoint
429rate_limitToo many requests in the last minute (Retry-After: 60)
429daily_limitKeyless per-IP daily cap reached
429credits_exhaustedKeyed monthly allowance used up

Example, input that is not number-shaped:

{"success": false, "error": true, "reason": "invalid_input", "message": "Provide a value shaped like a phone number.", "docs": "https://areacodecheck.com/phone-api"}

Fair Use & Attribution

  • 100 requests per day per IP, 30 per minute. For form validation, combine with client-side checks first.
  • This API identifies prefixes, not people. It cannot and does not reveal caller identity.

Frequently Asked Questions

Is the API really free?

Yes. No API key, no registration, no credit card. Each IP address can make up to 100 requests per day, and CORS is enabled so you can call it directly from the browser.

Are numbers stored?

No. The lookup is a prefix match against public ITU and NANPA assignments; numbers are never written to disk or logged, and responses are served with Cache-Control: no-store.

Can I test it right now?

Try /api/phone/14155552671 in your browser.

What does the API return?

The country calling code and country, and for North American numbers the area code, its location and country, the primary timezone, and whether the number matches the valid NANP format.