Search Available Numbers

This page shows you how to programmatically search for numbers that are available for purchase.

You can also search for available numbers online, using the developer dashboard or from the command line, using the Nexmo CLI.

Replace the following variables in the sample code with your own values:

Name Description
VONAGE_API_KEY Your Vonage API key
VONAGE_API_SECRET Your Vonage API secret
COUNTRY_CODE The two digit country code for the numbers you want to search. For example: GB for the United Kingdom.
VONAGE_NUMBER_TYPE The type of number: landline, mobile-lvn or landline-toll-free
VONAGE_NUMBER_FEATURES The capabilities of the number: SMS, VOICE or SMS,VOICE for both
NUMBER_SEARCH_CRITERIA The filter criteria. For example, numbers containing 234.
NUMBER_SEARCH_PATTERN Where the NUMBER_SEARCH_CRITERIA should appear in the number:
  • 0 - At the beginning of the number
  • 1- Anywhere in the number
  • 2 - At the end of the number

Write the code

Add the following to search-numbers.sh:

Copy to Clipboard
curl "https://rest.nexmo.com/number/search?api_key=$VONAGE_API_KEY&api_secret=$VONAGE_API_SECRET&country=$COUNTRY_CODE&type=$VONAGE_NUMBER_TYPE&features=$VONAGE_NUMBER_FEATURES&pattern=$NUMBER_SEARCH_CRITERIA&search_pattern=$NUMBER_SEARCH_PATTERN"

View full source

Run your code

Save this file to your machine and run it:

sh search-numbers.sh

Prerequisites

npm install @vonage/server-sdk

Create a file named search.js and add the following code:

Copy to Clipboard
const vonage = new Vonage(
  {
    apiKey: VONAGE_API_KEY,
    apiSecret: VONAGE_API_SECRET
  },
  {
    debug: true
  }
)

View full source

Write the code

Add the following to search.js:

Copy to Clipboard
vonage.number.search(
  COUNTRY_CODE,
  {
    type: VONAGE_NUMBER_TYPE,
    pattern: NUMBER_SEARCH_CRITERIA,
    search_pattern: NUMBER_SEARCH_PATTERN,
    features: VONAGE_NUMBER_FEATURES
  },
  (err, res) => {
    if (err) {
      console.error(err)
    }
    else {
      console.log(`Here are ${res.numbers.length} of the ${res.count} matching numbers available for purchase:`)
      res.numbers.forEach((number) => {
        console.log(`Tel: ${number.msisdn} Cost: ${number.cost}`)
      })
    }
  }
)

View full source

Run your code

Save this file to your machine and run it:

node search.js

Prerequisites

Add the following to `build.gradle`:

compile 'com.vonage:client:5.5.0'

Create a class named SearchNumbers and add the following code to the main method:

Copy to Clipboard
VonageClient client = VonageClient.builder()
        .apiKey(VONAGE_API_KEY)
        .apiSecret(VONAGE_API_SECRET)
        .build();

View full source

Write the code

Add the following to the main method of the SearchNumbers class:

Copy to Clipboard
NumbersClient numbersClient = client.getNumbersClient();

SearchNumbersFilter filter = new SearchNumbersFilter(COUNTRY_CODE);
filter.setFeatures(VONAGE_NUMBER_FEATURES);
filter.setPattern(NUMBER_SEARCH_CRITERIA);
filter.setSearchPattern(NUMBER_SEARCH_PATTERN);

SearchNumbersResponse response = numbersClient.searchNumbers(filter);

System.out.println("Here are "
        + response.getNumbers().length
        + " of the "
        + response.getCount()
        + " matching numbers available for purchase."
);

for (AvailableNumber number : response.getNumbers()) {
    System.out.println("Tel: " + number.getMsisdn());
    System.out.println("Cost: " + number.getCost());
}

View full source

Run your code

We can use the application plugin for Gradle to simplify the running of our application. Update your build.gradle with the following:

Copy to Clipboard
  apply plugin: 'application'
  mainClassName = project.hasProperty('main') ? project.getProperty('main') : ''

Run the following gradle command to execute your application, replacing com.vonage.quickstart.numbers with the package containing SearchNumbers:

gradle run -Pmain=com.vonage.quickstart.numbers.SearchNumbers

Prerequisites

Install-Package Vonage

Create a file named SearchNumbers.cs and add the following code:

Copy to Clipboard
using Vonage.Numbers;
using Vonage.Request;
using Vonage;

View full source

Add the following to SearchNumbers.cs:

Copy to Clipboard
var credentials = Credentials.FromApiKeyAndSecret(VONAGE_API_KEY, VONAGE_API_SECRET);
var client = new VonageClient(credentials);

View full source

Write the code

Add the following to SearchNumbers.cs:

Copy to Clipboard
var request = new NumberSearchRequest()
{
    Country = COUNTRY_CODE,
    Type = VONAGE_NUMBER_TYPE,
    Features = VONAGE_NUMBER_FEATURES,
    Pattern = NUMBER_SEARCH_CRITERIA,
    SearchPattern = NUMBER_SEARCH_PATTERN
};

var response = client.NumbersClient.GetAvailableNumbers(request);

View full source

Prerequisites

composer require vonage/client

Create a file named search-available.php and add the following code:

Copy to Clipboard
use Vonage\Numbers\Filter\AvailableNumbers;
use Vonage\Entity\IterableAPICollection;

View full source

Add the following to search-available.php:

Copy to Clipboard
$basic = new \Vonage\Client\Credentials\Basic(VONAGE_API_KEY, VONAGE_API_SECRET);
$client = new \Vonage\Client($basic);

View full source

Write the code

Add the following to search-available.php:

Copy to Clipboard
/** @var IterableAPICollection $response */
$filter = new AvailableNumbers([
    "pattern" => (int) NUMBER_SEARCH_CRITERIA,
    "search_pattern" => (int) NUMBER_SEARCH_PATTERN,
    "type" => VONAGE_NUMBER_TYPE,
    "features" => VONAGE_NUMBER_FEATURES,
]);
$response = $client->numbers()->searchAvailable(COUNTRY_CODE, $filter);

echo "There are " . count($response) . " matching numbers available for purchase:\n";

foreach ($response as $number) {
    echo "Tel: " . $number->getMsisdn() . " Cost: " . $number->getCost() . "\n";
}

View full source

Run your code

Save this file to your machine and run it:

php search-available.php

Prerequisites

pip install vonage

Create a file named search.py and add the following code:

Copy to Clipboard
import vonage

client = vonage.Client(key=VONAGE_API_KEY, secret=VONAGE_API_SECRET)

View full source

Write the code

Add the following to search.py:

Copy to Clipboard
responseData = client.get_available_numbers(
    COUNTRY_CODE,
    {
        "pattern": NUMBER_SEARCH_CRITERIA,
        "search_pattern": NUMBER_SEARCH_PATTERN,
        "type": VONAGE_NUMBER_TYPE,
        "features": VONAGE_NUMBER_FEATURES,
    },
)

print(
    f'Here are {len(responseData["numbers"])} of the {responseData["count"]} matching numbers available for purchase:'
)

for number in responseData["numbers"]:
    print(f'Tel: {number["msisdn"]} Cost: {number["cost"]}')

View full source

Run your code

Save this file to your machine and run it:

python search.py

Prerequisites

gem install vonage

Create a file named search.rb and add the following code:

Copy to Clipboard
client = Vonage::Client.new(
  api_key: VONAGE_API_KEY,
  api_secret: VONAGE_API_SECRET
)

View full source

Write the code

Add the following to search.rb:

Copy to Clipboard
begin
  response = client.numbers.search(
    country: COUNTRY_CODE,
    msisdn: VONAGE_NUMBER,
    type: VONAGE_NUMBER_TYPE,
    features: VONAGE_NUMBER_FEATURES,
    pattern: NUMBER_SEARCH_CRITERIA,
    search_pattern: NUMBER_SEARCH_PATTERN
  )

  puts "Your search returned #{response.numbers.length} of the #{response.count} matching numbers available for purchase:"

  response.numbers.each do |number|
    puts "Tel: #{number.msisdn} Cost: #{number.cost}"
  end
rescue
  puts "Error searching numbers"
end

View full source

Run your code

Save this file to your machine and run it:

ruby search.rb

See also