Every B2B data Actor I use on Apify has thirty or forty input fields. That is great for an agent and terrible for a person who opens the page for the first time and just wants a list of HR directors in Ohio
So I saved the combinations people actually ask for as ready-made tasks. A task page shows the input already filled in, the columns you will get and a Try for free button. The button copies the task into your Apify account, you change a field or two and press start
Below are thirty of those jobs, grouped by the problem you walk in with. For each one: the link, the input, what comes back and what to run next. The counts were taken with free previews on 31 October 2026
How to use a task
Open the link, press Try for free, change what you need, press Start. The input on the page is plain JSON, so the same object works from the API, from Make or n8n, and from an agent over MCP.
Two habits save most of the budget. Count first wherever the Actor has a free count or preview. And cap the run with maxResults or maxRows until you like what comes back.
You have an ICP and no list
This is where B2B Leads Finder lives. You describe the people, it returns one row per person, and every row has a live email.
1. Sales leaders at mid-size US companies. Open the task.
{"jobTitles": ["vp sales", "head of sales", "chief revenue officer"], "countries": ["us"], "companySizeMin": 50, "companySizeMax": 1000, "emailType": "any", "maxResults": 100}
Each row brings fullName, jobTitle, email with emailType set to work or personal, the company name, domain, size and industry, location and the profile link. phoneOnRecord tells you for free whether a mobile number exists. People with no live email are skipped and counted in a note row, not charged.
Two fields worth knowing here. maxPerCompany stops one big employer from eating the list. excludeDatasets takes the dataset of last week's run and leaves those people out, so a weekly rerun only brings new names.
2. Small business owners. Open the task. The trick is in one field: "owner" also matches product owners and process owners, so the task excludes them.
{"jobTitles": ["owner", "founder", "ceo"], "excludeJobTitles": ["product owner", "process owner"], "countries": ["us"], "companySizeMin": 1, "companySizeMax": 50, "emailType": "any", "maxResults": 100}
3. Managing directors in Germany. Open the task. Local markets write titles in the local language, so search in it.
{"jobTitles": ["geschäftsführer", "inhaber", "managing director", "ceo"], "countries": ["de"], "companySizeMin": 10, "companySizeMax": 250, "emailType": "any", "maxResults": 100}
4. HR and talent leaders, or procurement managers. Same Actor, different titles. The HR task asks for work addresses only with "emailType": "work", which is what you want when you sell to a company and not to a person. The procurement task adds "industries": ["Manufacturing"] and a seniority floor so buyers come without interns.
5. You already built the search in Apollo. Open the task. Paste the people-search URL into apolloUrl and the Actor reads the filters out of it. No Apollo login and no credits.
6. You need people you can call, not just email. Leads with Phones takes the same filters and only returns people who have both a verified mobile and a live email. Sales leaders with mobiles and real estate agents and brokers are ready to run.
{"jobTitles": ["realtor", "real estate agent", "real estate broker", "broker associate"], "industries": ["Real Estate"], "countries": ["us"], "maxResults": 50}
Rows carry phone in E.164, every number in phones, the email and the company. A skipped_no_contact note row says how many matching people had no mobile or no email. Those cost nothing.
Count before you pay for a single row
People Search has a count mode and a market mode. Neither charges per row, and they answer the question you should ask before any list: how big is this, really.
7. How many software engineers per country. Open the task.
{"mode": "count", "titleKeywords": ["software engineer", "software developer"], "segments": [{"name": "United Kingdom", "countries": ["gb"]}, {"name": "Germany", "countries": ["de"]}, {"name": "Canada", "countries": ["ca"]}]}
One row per segment with _total. Today the UK came back with about 186 thousand, Canada 166 thousand and Germany 116 thousand. The US and India stop at the count ceiling of a million, which tells you to narrow before you pull.
8. Compare sales team size across companies. Open the task. Each segment is a company domain, the titles are account executives, SDRs and sales managers. Handy for sizing a territory or for a competitor slide.
9. Count a Sales Navigator search before exporting it. Open the task. Paste the search URL, get the count, then run the export task with the same URL. The sample search for US heads of growth counted 1,278 people. No seat and no cookies.
Then switch mode to people and you get rows. Two filters people rarely find on their own: onlyBetweenJobs for people with no current position, and careerStartYearMin for engineers early in their career.
You hold profile URLs or emails
The two most used Actors in the family live here. The tasks use placeholder inputs, so replace them with your own list.
10. Profile URLs to mobile numbers. Open the task on Phone Number Finder.
{"profileUrls": ["https://www.linkedin.com/in/jane-doe-example", "jane.example@example.com", "Jane Example, example.com"]}
The field takes profile links, email addresses and "Name, domain" lines in one list, mixed freely. A found row has primaryPhone, all numbers in phones, phoneCount, the name, title, company and location. no_phone, not_found and profile_removed are free rows that tell you why.
11. CRM contacts with an email and no number. Open the task. Same Actor, the list is just emails. Export the column from the CRM and paste it.
12. Profile URLs to work emails. Open the task on Email Finder.
{"profileUrls": ["https://www.linkedin.com/in/jane-doe-example"], "includePersonalEmails": false}
The row gives email, every company address on record in workEmails, and emailType. That last field is the one to read. work_current is an address at today's employer. work_other is an address from somewhere else, usually an old job.
13. Find the CRM contacts who will bounce. Open the task. Same input, different reading. Every work_other row is a contact whose address in your CRM probably points at a former employer. Fix those before the next sequence, not after the bounce report.
14. Personal emails for recruiting. Open the task. Flip includePersonalEmails to true and gmail or outlook addresses come back too, which is what a recruiter needs for someone who should not get a job offer at their work address.
You have a list of companies
Company Employees and Decision Maker Email Finder by Domain both start from a website domain.
15. The leadership team of one company. Open the task.
{"companies": ["hubspot.com"], "roles": ["cxo", "vp", "director"], "titleExcludes": ["assistant", "office of", "executive operations", "chief of staff"], "excludeLowSignal": true, "maxRows": 200}
Rows carry fullName, title, seniority, location, positionStartYear, hasWorkEmail, hasPersonalEmail and the profile link. The titleExcludes list is there because executive assistants love titles like "Office of the CEO".
16. Every employee, then contacts only for the ones you need. The roster task uses "profileDetail": "roster", the light tier, to list the whole company. The contacts task switches to "profileDetail": "contacts" with "mustHave": ["email"], so anyone without an address is skipped for free.
17. Engineers at a company you recruit from. Open the task. titleContains takes engineer and developer, titleExcludes drops sales engineers and solutions engineers.
18. The CEO and founders of a list of companies. Open the task.
{"domains": ["linear.app", "vercel.com", "supabase.com", "posthog.com", "retool.com"], "roles": ["founder", "cxo"], "maxPerCompany": 3}
Rows come ranked per company in _rank, with the title, seniority, profile link and an email that reaches the person today. That means an address on the company domain, else a personal one, never one at a past employer. There are ready versions for marketing leaders and CTOs and engineering leaders.
19. The email format of a domain. Open the task on Company Email Format Finder. Send domains and get pattern like first.last, how many real addresses confirm it, how strongly they agree, and a few masked samples. Useful when you have a name and a company and nothing else.
You want a reason to reach out
A list is cold until something happens at the company. These tasks start from the something.
20. Companies hiring account executives right now. Open the task on Companies Hiring Now.
{"jobTitles": ["account executive"], "locations": ["United States"], "postedLimit": "month", "excludeAgencies": true, "maxCompanies": 25, "decisionMakers": true, "decisionMakerTitleKeywords": ["chief revenue", "head of sales", "vp sales"], "decisionMakersPerCompany": 2}
The free preview counted 3,344 employers with 12,279 matching postings in the last month. Each company row carries matchingJobs, the job titles, jobs30d and jobs90d for the hiring pace, and the company card. With decisionMakers on, the people who own the hire follow as rows of _type decision_maker.
A team hiring five AEs is probably shopping for sales tools too. The engineering version does the same for German companies hiring developers, with the CTO.
21. New senior hires at your target accounts. Open the task on New Hires Finder. New leaders tend to pick their vendors in the first months.
{"companyDomains": ["hubspot.com", "zendesk.com", "asana.com"], "sinceMonths": 12, "seniority": ["director", "vp", "cxo"], "maxPerCompany": 20}
Rows bring startedAt, previousCompany and previousTitle, which is the opening line of the email.
22. Former employees of a company and where they are now. Open the task on Former Employees Finder. Point it at a customer and you find champions who moved to new companies. Point it at a competitor and you find people who already know the problem. leftAfterYear keeps it recent, and each row has currentCompany, currentTitle and currentRoleStartYear.
23. New VPs of sales since last October. Open the task. People Search with currentRoleStartedAfterDate set to 2025-10. Change the titles and you have new CFOs, new heads of people, new anything.
24. Who hires for Kubernetes in Berlin. Open the task on Jobs Database API. It searches the job description, not the title, so a platform engineer posting that mentions Kubernetes counts. Today: 96 open postings at 65 employers, data through 21 October.
{"titleSearch": ["devops engineer", "platform engineer", "site reliability engineer"], "descriptionSearch": ["kubernetes"], "locationSearch": ["Berlin, Germany"], "timeRange": "30d", "removeAgency": true, "previewOnly": true}
Write the city with its country. A bare "Berlin" is refused, "Berlin, Germany" works.
You need companies, not people
25. Seed startups in Europe funded since 2025. Open the task on Company Search.
{"countryGroups": ["eu"], "hasFunding": true, "fundingRounds": ["pre_seed", "seed"], "fundedAfter": "2025-01-01", "employeesMax": 50, "previewOnly": true}
The preview counted 1,650 companies. Turn previewOnly off and each row is a company card: name, domain, headcount, industry, HQ and a funding block with the last round type and date. The Series A and B task and German manufacturers work the same way.
26. Companies like your best customers. Open the task on Lookalike Company Finder. Give it two or three customer domains in seedDomains. Every row says what it matched on in matchedOn, so you can see why a company is there instead of trusting a score.
27. Clean up a column of messy domains. Open the task on Company Enrichment by Domain. It takes https://www.notion.so/product, WWW.GONG.IO and linear.app/features as they come from a spreadsheet and returns one card per domain. When two companies claim a domain, the row says so and costs nothing instead of guessing.
You have a mess to clean
28. Qualify inbound sign-ups by email. Open the task on Reverse Email Lookup. Paste the emails from your sign-up form and get back the person, title and company with "compact": true. Now you know which trial is a VP at a real company and which is a student.
29. Where do your customer contacts work now. Open the task on Profile Lookup. Feed it the profile URLs of the people who signed your contracts. A changed companyName is either a churn risk or a new account, sometimes both.
30. A CRM export with a bit of everything. Open the task on Waterfall Lead Enrichment. Each row of the CSV can carry a different key: an email, a profile URL, a name with a company. The Actor resolves whatever is there to a profile and adds contacts with "contacts": true. For people files there is also Bulk People Enrichment.
Chains that work
One task rarely finishes the job. These are the chains I run most:
- Companies Hiring Now for the employers, then the domain column into Decision Maker Email Finder, then the profile links into Phone Number Finder for the ones worth a call.
- People Search in
countmode to size the box, B2B Leads Finder to pull it, and the same input every Monday withexcludeDatasetspointing at last week. - Former Employees Finder on your best customer, then Email Finder on the profile links, and keep only
work_current. - Reverse Email Lookup on a new sign-up, Company Enrichment by Domain on the company, Decision Maker Email Finder for the person who signs.
Running them from an agent
Every Actor here is also an MCP tool. Pin the ones you need so the agent does not load the whole Store:
claude mcp add --transport http apify "https://mcp.apify.com?tools=b2bsearch/b2b-leads-finder,b2bsearch/people-database-search,b2bsearch/company-employees,b2bsearch/linkedin-to-phone" --header "Authorization: Bearer <APIFY_TOKEN>"
The task inputs above are exactly what the agent sends. Ask it to count first and to cap each call with maxResults, and it will usually do both.
FAQ
What does Try for free do? It copies the task into your Apify account with the input filled in. You run it on your own account and can change any field first.
Do I pay for misses? No. A person with no email, a domain nobody claims or a profile that was removed comes back as a free row with a _status that says why.
Does it scrape anything or need my login? No. The answers come from a database, so there are no cookies, sessions or proxies on your side.
Can I use these from the API? Yes. POST the same JSON to the Actor's run endpoint, or run the task by its id.
If the job you have is not on this list, tell me in the comments. The good ones become task number thirty-one.
Top comments (2)
It looks promising, is it available on free Apify plan?
sure, I have an article on pricing and limits dev.to/kevinhall/what-10-buys-on-a...