Skip to main content

API - Search Companies

Updated yesterday

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


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

  1. 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 a long 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:

    • employeeCounts: From X to X (From - Minimum value, must be greater than or equal to 0, To - Maximum value, must be greater than 'from' other. 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.

    • countries : Searches for companies with headquarters in the list (maximum: 100). Only ISO 3166 alpha-2 country codes accepted, check codes here.

    • revenues : From X to X (From - Minimum value, must be greater than or equal to 0, To - Maximum value, must be greater than 'from' other. Must be greater than 0 or it will be ignored)

    • Limit: Is the maximum amount of results per page, must be between 1 and 200

Default: 10Minimum: 1Maximum: 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": {
"countries": [
"fr"
],
"domains": [
"surfe.com"
],
"domainsExcluded": [
],
"employeeCount": {
"from": 1,
"to": 999999999999999
},
"industries": [
],
"revenue": {
"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:

{
"companyDomains": [
"surfe.com"
],
"companies": [
{
"name": "Surfe",
"domain": "surfe.com",
"industries": [
"Software",
"CRM",
"Internet",
"SaaS",
"Sales Automation"
],
"employeeCount": 54,
"revenue": "10-50M",
"countries": [
"fr"
]
}
]
}

You’ll get detailed organization information including:

  • Name and domain

  • Industries

  • Employee Count

  • Revenue

PaginationToken:

If your search returns a lot of results, use pagination to fetch them in batches.

  1. Send first request with blank pageToken

  2. Get nextPageToken in the response

  3. Add it into the next request in pageToken

  4. 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": {
"countries": [
"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.


Additional Resources

Did this answer your question?