Need to find a specific company or explore businesses based inputs such as industry, revenue or location? The Search Companies API endpoint lets you do just that. Quickly and easily. Perfect for building prospecting lists or verifying company details.
Search for Companies
Endpoint: POST v2/companies/search
What does this endpoint do?
This endpoint allows you to search for organizations by name, domain, or a variety of filters. It's great for sales, marketing, and operations teams who want to identify and qualify new leads based on specific characteristics.
You can search using:
Company name or website
Industry
Employee count
Location
Revenue
Technologies
Keywords
Department sizes
Year founded
Please note: results from this endpoint count towards your Companies look-alikes quota (200 per day).
How do I use this endpoint?
To use this endpoint, you'll need:
A valid Surfe API Key
Basic understanding of JSON (no coding skills required, we'll walk you through it!)
A tool to send API requests (like Postman or a developer who can test it for you)
Step 1: Get Your API Key
Log in and navigate to the API Key section.
Copy your API key (you'll need it for authorization).
Don’t share your API key publicly, it gives access to your account.
Step 2: Build your request with filters
Endpoint v2/companies/search
Headers (Required)
Authorization: Bearer YOUR_API_KEY (Ensure to paste the token you copied in the first step in the authorization section! You will need to include Bearer TOKEN)
Example:
Authentication: Authorization: Bearer SurfeRocks2025APIKey
Content-Type: application/json
Request Body
You can provide just a company domain along with the country, employee count and revenue, or combine it with filters for more targeted results.
Fields you can include:
domains: List of domains of the companies you want to look for.domainsExcluded: List of domains to exclude from the search.
Filters:
employeeCount: From X to X (From - Minimum value, must be greater than or equal to 0, To - Maximum value, must be greater than 'from'. Must be greater than 0 or it will be ignored)industries: List of industries a company can belong to. Check industries for the full list of accepted values.industriesExcluded: List of industries to exclude from the search.countries(deprecated): This filter has been deprecated. Use thelocalitiesfilter instead for more in-depth location searches.localities: Search for companies by location. Accepts countries and world regions, specific regions within a country, specific zip codes, or free text within a company's full address. Any locality filter can be set to target HQ locations only or any location.revenues: From X to X (From - Minimum value, must be greater than or equal to 0, To - Maximum value, must be greater than 'from'. Must be greater than 0 or it will be ignored)naicsCodes: Search by NAICS industry codes.naicsCodesExcluded: Exclude specific NAICS industry codes from results.technologies: Search by technologies used by a company.technologiesExcluded: Exclude specific technologies from results.technologyCategories: Search by technology categories.technologyCategoriesExcluded: Exclude specific technology categories from results.departmentSizes: Search by a specific department within a specific range of employees.keywords: Search by specific keywords associated with a company.keywordsExcluded: Exclude specific keywords from results.yearFounded: Search for companies founded within a specific time range. Setfromandtovalues.names: Search by company names.limit: Maximum amount of results per page, must be between 1 and 200. Default: 10, Minimum: 1, Maximum: 200
cURL Example
You can copy this into Postman or your preferred API tool:
curl --location 'https://api.surfe.com/v2/companies/search' \
--header 'Authorization: Bearer YOUR_API_TOKEN' \
--header 'Content-Type: application/json' \
--data '{
"filters": {
"departmentSizes": [
{
"department": "Engineering",
"from": 10,
"to": 100
}
],
"domains": [
"surfe.com"
],
"domainsExcluded": [
"surfshop.fr"
],
"employeeCount": {
"from": 1,
"to": 999999999999999
},
"industries": [
"CRM",
"Software",
"SaaS",
"Internet"
],
"industriesExcluded": [
"Retail",
"E-commerce"
],
"keywords": [
"AI",
"Machine Learning",
"Blockchain"
],
"keywordsExcluded": [
"Google"
],
"localities": [
{
"country": "fr"
}
],
"names": [
"Surfe",
"Leadjet"
],
"revenue": {
"from": 1,
"to": 999999999999999
},
"technologies": [
"MySQL",
"RSS"
],
"technologiesExcluded": [
"Marketo",
"Pardot"
],
"technologyCategories": [
"Font scripts"
],
"technologyCategoriesExcluded": [
"Referral marketing"
],
"yearFounded": {
"from": 1,
"to": 999999999999999
}
},
"limit": 10,
"pageToken": ""
}'
This example searches for companies named “Surfe” using the domain “surfe.com”.
Example Response
Here’s an example of the kind of company data you’ll receive:
{
"companies": [
{
"countries": [
"fr"
],
"domain": "surfe.com",
"employeeCount": 100,
"industries": [
"Software",
"Technology"
],
"naicsIndustries": [
{
"code": 0,
"name": "string",
"rank": 0
}
],
"name": "Surfe",
"revenue": "10-50M"
}
],
"companyDomains": [
"surfe.com"
],
"nextPageToken": ""
}
You'll get detailed organization information including:
Name and domain
Industries
NAICS industry classifications
Employee count
Revenue
PaginationToken
If your search returns a lot of results, use pagination to fetch them in batches.
Send first request with blank pageToken
Get nextPageToken in the response
Add it into the next request in pageToken
Repeat to get more results
Think of pageToken like a bookmark, each one helps you pick up where the last search left off.
Example response with nextPageToken:
"nextPageToken": "eyJxdWVyeUlEIjoiZWRjNTJmZGEtYzM4MS00YTZlLWI2OWYtMTE4MjhhOGQ3OTJiIiwib2Zmc2V0IjoxMH0="
You will need to use this in the request body again to go to the next page of results. Simple copy and paste the token into the pageToken field in the same request body you just called:
{
"filters": {
"localities": [
{
"country": "fr"
}
],
"domains": [
"surfe.com"
],
"domainsExcluded": [
],
"employeeCount": {
"from": 1,
"to": 999999999999999
},
"industries": [
],
"revenue": {
"from": 1,
"to": 999999999999999
}
},
"limit": 10,
"pageToken": "eyJxdWVyeUlEIjoiNTc4MWIzMjYtODU2Zi00MTk5LWEwMzItMDRlMzYwODE1NTA2Iiwib2Zmc2V0IjozfQ=="
}Click send again and this will then return the next page of the results in the request.
To retrieve the next page of results you will need to copy and paste the next page token after each response has been retrieved. They look very similar, but they are different and will pull the next page of results!
Why use this?
If you're targeting companies in a specific market or segment, this endpoint helps you:
Verify company data
Build tailored prospect lists
Discover new organizations in a region or industry
Save time by filtering out irrelevant businesses
Need Help?
If you have any questions or need further assistance, feel free to reach out to our support team via Intercom.
