Bird
Bird

A world of possibilities.
One place to start.

Lookup / Compare

Bird vs Vonage Number Insight for phone-number lookup

Compare the phone-number questions behind your routing and risk decisions. Map the result your application needs before replacing the lookup call.

Where Vonage Number Insight fits

Vonage Number Insight documents different levels of number information. A migration needs to account for the level and fields your application currently requests.

Read Vonage Number Insight documentation

Where Bird fits

Bird combines a base lookup with individually requested properties. The application reads each answered value and keeps unavailable results explicit before deciding the next customer step.

Explore Bird Lookup

Compare the integration you will operate

CapabilityBirdVonage Number Insight
Request modelSelect the optional properties your application actually uses.Identify the Number Insight level and options in the current request.
Field meaningMap country, line type and optional signals using Bird field definitions.Retain the documented meaning of each consumed Number Insight field.
Unanswered resultCheck property status before using its value.Review the old integration’s error and unavailable-result handling.

Run the same customer journey

Compare normalized numbers, served fields and the chosen customer route across representative test inputs. Test an unavailable property so the new code cannot accidentally treat it as a definitive risk verdict.

Start the working example

Make the switch deliberately

Replace the decision adapter and its monitoring before removing the old integration. Preserve observation times and provider references needed to investigate different results.

Migrate from Vonage Number Insight

Inspect the number before you act.

Run the receiving lookup and map the returned fields to your application. Number metadata does not by itself establish reachability, customer identity or permission to message.

Run the complete quickstart ↗
npm install @messagebird/sdk
const answer = await bird.lookup.phoneNumber({
  phone_number: "+31612345678",
  type: ["classification", "score"],
});
console.log(answer.country_code, answer.line_type);
// Only a block whose status is ok carries a value, and only that one is billed.
if (answer.score?.status === "ok") console.log(answer.score.value);

Questions before switching

Does a lookup verify who owns the number?
No. Number information supports routing and risk decisions. Use a possession check when the customer must demonstrate control of the destination.
How should I handle an unavailable property?
Keep it unknown. Read the property status before using a value and define the next application step explicitly. Do not convert missing information into false, zero or a successful identity check.

Test it with your own workflow.

Start with the guide, or bring your integration and migration requirements to our team.

Start with one channel.
Add the others when you're ready.

A test API key is yours immediately. Production unlocks when you add a payment method and verify a sender.

Read docs
Using Claude Code, Cursor, or Codex? Copy a setup prompt and your agent installs the Bird CLI and skills for you. Pick yours:
Cursor