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 Vonage 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: |
VONAGE_NUMBER_TYPE | The type of number: |
VONAGE_NUMBER_FEATURES | The capabilities of the number: |
NUMBER_SEARCH_CRITERIA | The filter criteria. For example, numbers containing |
NUMBER_SEARCH_PATTERN | Where the
|
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:
Prerequisites
npm install @vonage/server-sdkCreate a file named search-numbers.js and add the following code:
const { Vonage } = require('@vonage/server-sdk');
const vonage = new Vonage({
apiKey: VONAGE_API_KEY,
apiSecret: VONAGE_API_SECRET,
});Write the code
Add the following to search-numbers.js:
vonage.numbers.getOwnedNumbers({
country: COUNTRY_CODE,
type: VONAGE_NUMBER_TYPE,
pattern: NUMBER_SEARCH_CRITERIA,
searchPattern: NUMBER_SEARCH_PATTERN,
features: VONAGE_NUMBER_FEATURES,
})
.then((numbers) => {
for (const number of numbers) {
console.log(number);
}
})
.catch((error) => console.error(error));Run your code
Save this file to your machine and run it:
Prerequisites
Add the following to build.gradle:
implementation 'com.vonage:server-sdk-kotlin:2.1.1'Create a file named SearchAvailableNumbers and add the following code to the main method:
val client = Vonage {
apiKey(VONAGE_API_KEY)
apiSecret(VONAGE_API_SECRET)
}Write the code
Add the following to the main method of the SearchAvailableNumbers file:
val numbers = client.numbers.searchAvailable {
country(NUMBER_COUNTRY_CODE)
type(NUMBER_TYPE)
features(*NUMBER_FEATURES)
pattern(NUMBER_SEARCH_PATTERN, NUMBER_SEARCH_CRITERIA)
}
for (number in numbers) {
println("""
Tel: ${number.msisdn}
Country: ${number.country}
Type: ${number.type}
Cost: ${number.cost}
""".trimIndent()
)
}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.kt.numbers with the package containing SearchAvailableNumbers:
Prerequisites
Add the following to build.gradle:
implementation 'com.vonage:server-sdk:9.3.1'Create a file 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 file:
SearchNumbersResponse response = client.getNumbersClient().searchNumbers(
SearchNumbersFilter.builder()
.country(NUMBER_COUNTRY_CODE)
.type(NUMBER_TYPE)
.features(NUMBER_FEATURES)
.pattern(NUMBER_SEARCH_PATTERN, NUMBER_SEARCH_CRITERIA)
.build()
);
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:
Prerequisites
Install-Package VonageCreate 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(vonageApiKey, vonageApiSecret);Write the code
Add the following to SearchNumbers.cs:
var request = new NumberSearchRequest()
{
Country = countryCode,
Type = vonageNumberType,
Features = vonageNumberFeatures,
Pattern = numberSearchCriteria,
SearchPattern = numberSearchPattern
};
Prerequisites
composer require vonage/clientCreate 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:
Prerequisites
pip install vonage python-dotenvWrite the code
Add the following to search.py:
from vonage import Auth, Vonage
from vonage_numbers import SearchAvailableNumbersFilter
client = Vonage(Auth(api_key=VONAGE_API_KEY, api_secret=VONAGE_API_SECRET))
numbers, count, next = client.numbers.search_available_numbers(
SearchAvailableNumbersFilter(
country=NUMBER_COUNTRY_CODE,
size=3,
pattern=NUMBER_SEARCH_CRITERIA,
search_pattern=NUMBER_SEARCH_PATTERN,
type=NUMBER_TYPE,
features=NUMBER_FEATURES,
)
)
pprint(numbers)
print(count)
print(next)
for number in numbers:
print(f'Tel: {number.msisdn} Cost: {number.cost}')Run your code
Save this file to your machine and run it:
Prerequisites
gem install vonageCreate a file named search.rb and add the following code:
Run your code
Save this file to your machine and run it: