Company Search by Industry, Size and Country avatar

Company Search by Industry, Size and Country

Pricing

from $0.90 / 1,000 company delivereds

Go to Apify Store
Company Search by Industry, Size and Country

Company Search by Industry, Size and Country

Company search by industry, size and country: set filters, get one company row per domain with name, website, industry, headcount, HQ, founding year and funding stage. Free plan: 100 per run. Pay per company delivered, empty searches free. Not a name lookup. No login or cookies.

Pricing

from $0.90 / 1,000 company delivereds

Rating

0.0

(0)

Developer

Open Enrich

Open Enrich

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

2

Monthly active users

8 days ago

Last modified

Features

Limited permissions

Share

Pay per result: $1.196/1k on the Free plan down to $0.896/1k on Gold. Free Apify plan: up to 100 per run, as many runs as your credit covers. Misses and notices are free.

Company search by industry, size and country: set the filters you care about, get one row per matching company with name, domain, website, industry, headcount, HQ, founding year and funding stage. One row per domain, no repeats. No login, no cookies, no start fee. You pay only for a company row you receive.

No login | Industry, headcount band, country and founding year | One company per domain | Rows without a domain are never delivered or charged | Empty searches = free | JSON/CSV export

Filters in, companies out. This actor finds companies by what they are, not by what they are called. It does not look up one company by name: for a domain you already hold, use a lookup actor. Chain it with people-at-company to get the people behind each domain it returns.

See all actors by b2bdata


💳 Pricing and plans

One event, company-card, charged once per company row delivered. Prices per 1,000 companies (set on the Pricing tab):

EventWhen it is chargedFree planGold plan
company-cardA company row is delivered to your dataset$1.196$0.896

Bronze and Silver prices are on the Pricing tab. Higher Apify plans only lower the price. Empty searches, failed lookups, skipped rows and notices are free, and there is no start fee.

Plan-credit math. The free plan's $5 monthly credit covers about 4,170 companies at the Free price.

Success-only billing

You are charged only for a company row you receive. A search that matches nothing gets one free notice row (reason: "no_matches"). A row the data holds without a usable domain, a second record for a domain you already received, and a row with a founding year in the future are skipped: not delivered, not charged. An upstream failure is a free notice, and companies delivered before it stay delivered.

The free plan

Free Apify accounts get up to 100 companies per run, and as many runs as their Apify credit covers. Nothing is stored on our side. If your limit is higher and more companies match, the run delivers 100 and adds one free notice row (reason: "free_plan_limit"). Narrow the filters and run again, or use a paid Apify plan for no per-run limit.

Keep a run small while you test

limit (default 10, maximum 10,000) caps the whole run and what is charged. The actor asks for only as many rows as it can still deliver and charge, so a spend cap on the run is never overshot. Try one filter set with limit: 5, read the rows, then scale up.


⚡ Why this company search actor?

  • Four filters that narrow fast. Country, industry, headcount band and founding year combine. Germany, software, 51-200 employees, founded 2015 or later matched 190 companies in a check on 2026-11-06.
  • One row per domain. The data can hold the same company under several records. You get the domain once.
  • No junk rows billed. Rows without a domain are not delivered or charged.
  • Spend is bounded. limit and the run's spend cap decide the cost before you start.
  • Success-only, no start fee. Empty searches and notices are free.

🎯 Use cases: build a target-account list from filters

  • Target-account lists. Mid-size software companies in the DACH region founded since 2015.
  • Market maps. Every company in an industry and country, for sizing or outreach planning.
  • Territory building. Companies per country and headcount band for a sales region.
  • Agent workflows. An AI agent needs a list of companies that fit a profile, then passes the domains on to another actor.

🚀 Quick start: companies for a set of filters

1. A first look

{ "countries": ["DE"], "industries": ["Software Development"], "sizes": ["51-200"], "limit": 5 }

2. A wider list across countries and sizes

{ "countries": ["DE", "AT", "CH"], "industries": ["Software Development", "IT Services and IT Consulting"], "sizes": ["51-200", "201-500"], "foundedFrom": 2015, "limit": 500 }

⚙️ Inputs

At least one of countries, industries, sizes, foundedFrom or foundedTo is required.

KeyTypeDefaultWhat it does
countriesarray of stringsanyTwo-letter country codes, for example DE, US. Use GB for the United Kingdom. At most 10.
industriesarray of stringsanyIndustry names, for example Software Development. An unknown name stops the run with a free notice that names it. At most 50.
sizesarray of stringsanyHeadcount bands: 1-10, 11-50, 51-200, 201-500, 501-1000, 1001-5000, 5001-10000, 10001+. Chosen bands must touch. Companies with no headcount on file are not returned when you set a size.
foundedFromintegernoneFounded in this year or later.
foundedTointegernoneFounded in this year or earlier.
limitinteger10Most companies delivered in the whole run, which also caps what is charged. Maximum 10,000. Free plan: 100 per run.
includeAuditbooleanfalseAdds an audit object to each row.

Common industry names: Software Development, IT Services and IT Consulting, Technology, Information and Internet, Financial Services, Hospitals and Health Care, Pharmaceutical Manufacturing, Retail, Real Estate, Construction, Education, Advertising Services, Business Consulting and Services, Telecommunications, Food and Beverage Services.

Any other field stops the run before a lookup with remove unsupported fields: .... Nothing is charged.


📤 Output

One result row per company, in the order the data returns them. Empty values are left out.

KeyTypeMeaning, and when it is missing
domainstringThe company's site domain, lower-case. Always present
namestringCompany name
websitestringWebsite address as on file
linkedinUrlstringPublic company page URL
industrystringIndustry name
employeeCountintegerHeadcount on file. Missing when none is on file
hqCitystringHeadquarters place as on file, often written "City, Region"
hqCountrystringTwo-letter country code
foundedYearintegerYear founded. Missing when not on file
descriptionstringShort company description, cut at about 500 characters
hasFundingbooleanWhether a funding round is on file
lastFundingRoundstringType of the last round, for example seed. Missing without funding
lastFundingDatestringDate of the last round
domainOwnerbooleanfalse when the domain belongs to a parent or another entity rather than to this company
auditobjectOnly with includeAudit: requestId, latencyMs, matched

Example output (the shape is real, the values are illustrative):

{
"domain": "example-software.de",
"name": "Example Software GmbH",
"website": "https://www.example-software.de/",
"linkedinUrl": "https://www.linkedin.com/company/example-software",
"industry": "Software Development",
"employeeCount": 87,
"hqCity": "Munich, Bavaria",
"hqCountry": "DE",
"foundedYear": 2018,
"description": "Example Software builds planning tools for logistics teams.",
"hasFunding": true,
"lastFundingRound": "seed",
"lastFundingDate": "2022-04-29",
"domainOwner": true
}

How to read the rows

  • Order. Rows come in the order the data returns them: by country, then by headcount from the smallest up. With a limit you receive the first rows in that order. Without a size filter, the first rows are companies with no headcount on file, so set sizes when you use a limit.
  • Headcount is on file, not live. employeeCount is the number the data holds for the company. A size filter keeps only companies that have one.
  • A shared domain. Some rows are a division or a regional page whose domain belongs to a parent company. They are marked domainOwner: false; in one 100-row check, 7 were. Filter on it if you need companies that own their domain.
  • One row per domain. If the data holds one company under two records, you get one row.
  • Funding. You get the type and date of the last round. The amount is not delivered.
  • Match counts. With includeAudit, matched is how many companies match the filters in total, before any limit.

Other records in the run

  • MISSES (key-value store): holds {input: "filters", reason: "no_matches"} when nothing matched, otherwise an empty list.
  • errors-company-search (key-value store): technical failures, so you can run the search again. A note (partial: ...) means some companies were already delivered.
  • RUN_SUMMARY: how many companies match, how many were delivered, pages read, and how many rows were skipped for each reason.
  • Notice rows (type: "notice") appear for a search with no match (no_matches), an upstream failure (upstream_error), a free-plan cut (free_plan_limit), a reached spend limit (charge_limit_reached) or invalid input (invalid-input). Notices are never charged.

What is NOT returned

  • Companies looked up by name. Search is by filters only
  • Contact details, people or employee lists (use people-at-company)
  • Funding amounts, revenue or technology used
  • Companies with no domain on file

🛡️ Reliable results

Our data promise. We work to keep the data current, and we stand behind it. If a company is missing, a row looks wrong or a company has moved on, open the Issues tab with your run link. We review every report and sort it out with you, case by case.

  • No match is free and visible. A search with no result is a free notice and a MISSES record.
  • Repeats are charged once. One row per domain per run.
  • Each row is saved as it is delivered. A run that stops, or a page that fails halfway, keeps what it already produced.
  • Bounded pace. Pages run at about one a second. The run timeout is one hour.
  • Typos fail early. An unsupported field, a bad country code, a size band that does not touch the others or a limit above its maximum stops the run before any charge.

🤖 For AI agents (MCP)

This actor runs through the Apify MCP server. Prompt to copy:

"Use b2bdata/company-search with countries=["DE"], industries=["Software Development"], sizes=["51-200"] and limit=20. Return name, domain, employeeCount and hqCity."

When to use it. You need a list of companies that fit a profile. When not to. You hold a company name or domain and want that one company (use a lookup actor), or you need the people at a company (use b2bdata/people-at-company). Input contract. At least one of countries, industries, sizes, foundedFrom, foundedTo; optional limit 1-10,000 (default 10). Output contract. One row per company with domain, name, industry, employeeCount, hqCountry. Output is deterministic and schema-stable. A search with no match is a free notice row. Smoke test. limit: 1 with one country and one industry returns one row. Error cases. remove unsupported fields, an unknown industry, a bad country code or size, or a bad number ends the run SUCCEEDED with one free invalid-input notice row and nothing charged.


🔌 Integrations: send results anywhere

  1. API. Fetch rows from the run's default dataset: GET /v2/datasets/{datasetId}/items?format=csv.
  2. Webhook on run success to push rows to your own endpoint.
  3. n8n, Make, Zapier. Use the native Apify nodes: run the actor, then read the dataset.
  4. Google Sheets, Airtable, HubSpot, Salesforce, Clay. Join on domain and map name, industry and employeeCount to account fields.

🕐 Schedule examples

  • Monthly market refresh. A schedule with a saved task that holds your filters.
  • New-company watch. A weekly run with foundedFrom set to last year.

  • b2bdata/people-at-company: the people at each company domain this actor returns. Open
  • b2bdata/linkedin-company-search: company pages found by name, keyword or URL. Open
  • b2bdata/company-lookalikes: companies similar to seed domains. Open
  • b2bdata/headcount-by-department: how many people a company has per team. Open

See all actors by b2bdata


❓ FAQ

Data and coverage

How do I find companies by industry, size and country? Put country codes in countries, industry names in industries and a headcount band in sizes, then run. You get one row per company with its domain, website, headcount and HQ.

Can I search by company name? No. The data is searched by filters only, so a typo can never return the wrong company. To look up one company, use a lookup actor.

Why did I get fewer companies than I expected? Rows stop at limit (default 10, free plan 100). Raise it. A size filter also drops companies with no headcount on file. includeAudit shows matched, the total that match.

Why are the first rows so small? Rows come smallest headcount first. Without a size filter they start with companies that have no headcount on file. Set sizes.

Why is domainOwner false on a row? The domain belongs to a parent company or another entity, for example a regional page of a larger group. Filter on domainOwner if you need companies that own their domain.

Do I need a LinkedIn account or cookies? No. It is a search without login, cookies or an account to ban.

Pricing

What do I pay when nothing matches? Nothing. There is no start fee, and empty searches, skipped rows and notices are free.


🛟 Support

Use the Issues tab on this actor's Apify page for bugs, questions and feature requests. We answer within 48 hours on working days. Please include the run ID and the input you used. Published on Apify by b2bdata. Not affiliated with, endorsed by, or sponsored by any company or person named in the examples above.