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:
Key | Description |
---|---|
VONAGE_API_KEY |
Your Vonage API key (see it on your dashboard). |
VONAGE_API_SECRET |
Your Vonage API secret (also available on your dashboard). |
COUNTRY_CODE |
The two digit country code for the number. 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:
|
Write the code
Add the following to search-numbers.sh
:
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"
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:
const vonage = new Vonage(
{
apiKey: VONAGE_API_KEY,
apiSecret: VONAGE_API_SECRET
},
{
debug: true
}
)
Write the code
Add the following to search.js
:
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}`)
})
}
}
)
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:
VonageClient client = VonageClient.builder()
.apiKey(VONAGE_API_KEY)
.apiSecret(VONAGE_API_SECRET)
.build();
Write the code
Add the following to the main
method of the SearchNumbers
class:
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());
}
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:
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:
using Vonage.Numbers;
using Vonage.Request;
using Vonage;
Add the following to SearchNumbers.cs
:
var credentials = Credentials.FromApiKeyAndSecret(VONAGE_API_KEY, VONAGE_API_SECRET);
var client = new VonageClient(credentials);
Write the code
Add the following to SearchNumbers.cs
:
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);
Prerequisites
composer require vonage/client
Create a file named search-available.php
and add the following code:
use Vonage\Numbers\Filter\AvailableNumbers;
use Vonage\Entity\IterableAPICollection;
Add the following to search-available.php
:
$basic = new \Vonage\Client\Credentials\Basic(VONAGE_API_KEY, VONAGE_API_SECRET);
$client = new \Vonage\Client($basic);
Write the code
Add the following to search-available.php
:
/** @var IterableAPICollection $response */
$filter = new AvailableNumbers([
"pattern" => (string) 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";
}
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:
import vonage
client = vonage.Client(key=VONAGE_API_KEY, secret=VONAGE_API_SECRET)
Write the code
Add the following to search.py
:
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"]}')
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:
client = Vonage::Client.new(
api_key: VONAGE_API_KEY,
api_secret: VONAGE_API_SECRET
)
Write the code
Add the following to search.rb
:
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
Run your code
Save this file to your machine and run it:
ruby search.rb