Phone normalization API

Format and normalize phone numbers

Send phone numbers in whatever shape they arrived and get a single, consistent format back — so lookups, deduplication, and dialing stop failing on formatting.

The problem

The same phone number shows up as "(704) 555-1234", "704.555.1234", and "+17045551234". Stored inconsistently, it breaks equality checks, splits duplicates, and makes any integration that dials or matches on the field unreliable.

What you get

  • Normalizes varied input into one consistent, canonical format
  • Makes phone-based dedupe and lookups actually match
  • Runs inline at ingestion so bad formatting never lands
  • Deterministic output you can store and compare directly

Call it in one request

Plain HTTPS and JSON against /api/v1/normalize-phone. Use the SDK for typed calls, or hit the endpoint directly — same contract either way.

cURL
curl https://zapinner.com/api/v1/normalize-phone \
  -H "Authorization: Bearer zap_live_••••••" \
  -H "Content-Type: application/json" \
  -d '{"data":[{"phone":"(555) 123-4567"}],"options":{"field":"phone","default_country_code":"1"}}'
JavaScript (fetch)
const res = await fetch("https://zapinner.com/api/v1/normalize-phone", {
  method: "POST",
  headers: {
    Authorization: "Bearer zap_live_••••••",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
  "data": [
    {
      "phone": "(555) 123-4567"
    }
  ],
  "options": {
    "field": "phone",
    "default_country_code": "1"
  }
}),
})
const data = await res.json()
@zapinner/sdk
import { Zapinner } from "@zapinner/sdk"

const zap = new Zapinner({ apiKey: process.env.ZAPINNER_API_KEY })

const result = await zap.normalizePhone({
  "data": [
    {
      "phone": "(555) 123-4567"
    }
  ],
  "options": {
    "field": "phone",
    "default_country_code": "1"
  }
})

Frequently asked

What format does it return?
A single canonical representation, so every stored number looks the same and equality checks and joins work reliably.
Why not just strip non-digits myself?
Stripping characters loses country context and still leaves ambiguous values. Normalization handles those consistently so downstream matching and dialing don't break.
Can I pair it with deduplication?
Yes — normalize first, then dedupe. Consistent phone formatting is often what makes phone-based duplicate detection work at all.

Related solutions

Ship it today with Zapinner

One API key, one consistent interface, 79 data capabilities. Start on the free plan — no credit card required.

Canonical: https://zapinner.com/solutions/format-phone-numbers