Build a Prospect List with Firecrawl

Create a CSV of enriched prospects with Firecrawl's people data API.

Introduction

30 Second Summary

Finding the right people at the right companies can take hours of opening profiles. Copying every detail by hand adds even more work.

In this project, you will use Firecrawl's API to turn a plain-language audience description into a CSV of 20 enriched prospects. You will confirm verified work emails for a shortlist within the 1,000 free monthly credits.

What You'll Build

Your final demo opens as a 20-row spreadsheet with the details needed to review each prospect.

By the end of this project, you'll have:

  • A plain-language prospect search that returns matching names with their roles and companies as JSON.
  • An enriched prospect list that includes company funding and technology data.
  • A spreadsheet-ready CSV that shows email verification status for your shortlist.
  • Secret Mission: An optional challenge to push your skills further.

Are there any prerequisites?

You need a free Firecrawl account. You also need curl or Python for direct API requests.

Before We Start

Prospect research gets messy when the audience starts as a vague idea. A fixed target keeps every later result focused on the people you actually want to reach.

This project uses Firecrawl to turn a clear audience description into a CSV of 20 prospects. First, you need a working browser.

You also need a spreadsheet application. One shared definition will keep every prospect aligned with the project goal.

In this step, get ready to:
  • Confirm that your browser can reach Firecrawl.
  • Confirm that your spreadsheet application can open CSV files.
  • Define the target as developer-relations leads at Series B developer-tools companies.
Confirm your browser and spreadsheet app

Your browser gives you access to the data service. Your spreadsheet application gives the finished CSV a readable grid.

  • Press Cmd+Space (macOS) or the Windows key (Windows) to open your search bar.
  • Type the name of your web browser into the search bar.
  • Press Enter to open the browser.

You should see a browser window with an address bar.

  • Enter https://firecrawl.dev in the address bar.
  • Press Enter to load the website.

You should see Firecrawl's website load. This confirms that your browser has internet access.

  • Press Cmd+Space (macOS) or the Windows key (Windows) to open your search bar.
  • Type the name of your spreadsheet application into the search bar.
  • Press Enter to open the application.

You should see your spreadsheet application's start screen.

  • Create a blank spreadsheet from the application's start screen.
  • Use the application's file controls to find its option for opening or importing files.
  • Confirm that the option accepts CSV files.
  • Return to the blank spreadsheet.

You should see an empty grid of cells. The application is ready to open the prospect list later.

No spreadsheet app available?

  • Use your browser to access a spreadsheet application that supports CSV files.
  • Create a blank spreadsheet before continuing.

Help me choose a spreadsheet application for opening CSV files.

Good work. Your finished prospect list now has a spreadsheet ready to open it.

Define your prospect target

A prospect definition acts as an inclusion rule. Every person in the final file needs to match the complete target.

  • Use developer-relations leads at Series B developer-tools companies as the prospect target.
  • Set the final list size to 20 prospects.

Why define the audience first?

The role identifies the person. The funding stage narrows company maturity.

The company type keeps the list tied to developer tools. The 20-record limit gives the project a clear finish line.

Your answer now acts as the filter for every record that reaches the final spreadsheet.

Verify your starting point

A final readiness check catches missing tools before you begin working with prospect data.

Before you check, make a prediction about whether both tools and all four criteria are ready for the workflow.

  • Return to the browser you opened earlier.
  • Reload the Firecrawl website.

You should see the website load again. Your browser is ready for the next step.

  • Switch back to the blank spreadsheet from earlier.
  • Confirm that its file controls still offer a way to select a CSV file.

You should see the blank grid again. Your spreadsheet application is ready for the final prospect file.

  • Compare your checkpoint answer with the project target above.

Your criteria should identify developer-relations leads at Series B developer-tools companies. Your target size should be 20 prospects.

Your working tools now support a clearly defined 20-prospect target. Next, you'll create your Firecrawl account before checking its available credits.

Create Your Firecrawl Account

Your planned prospect-list script needs a Firecrawl account before it can request public company data.

An API key authorizes the script against your account. Your dashboard tracks the credits available for those requests.

In this step, you will create a free Firecrawl account. You will secure its API key before confirming the monthly credit balance.

In this step, get ready to:
  • Create a free Firecrawl account.
  • Store your Firecrawl API key securely.
  • Confirm your free monthly credit balance.
Create your free Firecrawl account

Firecrawl provides 1,000 free credits every month. The free account does not require a credit card.

  • Visit the Firecrawl sign-up page.
  • Choose an available sign-up method.
  • Complete the account prompts shown in your browser.
  • Finish any identity verification that Firecrawl requests.
  • Continue until the Firecrawl dashboard loads.

You should see the Firecrawl dashboard with sections for managing your account. Your account is now ready for the prospect-list project.

Can't reach the dashboard?

  • Check your inbox for an account verification message.
  • Return to the sign-up page using the same sign-up method.
  • Confirm that your browser allows the authentication page to finish loading.

Help me troubleshoot my Firecrawl sign-up flow.

Copy and store your API key

A copied API key grants access to your account's credits. Credential handling can feel delicate, so a private credential vault gives the key a safe home.

  • Select API Keys in the Firecrawl dashboard.
  • Find an active API key on the page.
  • Copy the active key using its copy control.
  • Save the copied key in a private password manager or credential vault.
  • Keep the key out of screenshots and shared notes.

Your script credential now has a secure home. You can retrieve it when the project starts making API requests.

Can't copy an active key?

  • Refresh the API Keys page.
  • Confirm that you are viewing the correct Firecrawl account.
  • Use the key creation control if no active key is listed.

Help me find or create an active Firecrawl API key.

Check your free credit balance

Credits measure Firecrawl API usage. Checking the balance now establishes a baseline before your prospect searches begin.

Before you check, picture the balance you expect from a fresh free account.

  • Return to the Firecrawl dashboard from earlier.
  • Select Usage in the dashboard.
  • Find the credit totals for the current billing cycle.

You should see the current credit usage for your billing cycle. A fresh free account should show a monthly allowance of 1,000 credits.

Why check the balance now?

Every Firecrawl API call consumes credits based on the endpoint and options used. This starting view gives you a clear point of comparison for the project run.

Your Firecrawl account is active. Your API key is stored securely. Next, you will use that access to search for developer-relations leads and inspect the first JSON records.

Search for Prospect Records

Your Firecrawl account is ready. A plain-language audience description still needs to become searchable filters.

Through Alexandria, Apollo can search people by job title. You will use company keywords to return the first matching records as JSON.

In this step, get ready to:
  • Translate your prospect criteria into title filters plus company keywords.
  • Run a people search for developer-relations leads at Series B developer-tools companies.
  • Verify that the first matching person records appear as JSON.
Set your search filters

Search filters translate your audience into values that a data provider can match. Several title variants widen the search while the company keywords keep it focused.

  • Return to the browser from earlier.
  • Navigate to https://www.firecrawl.dev/alexandria/apollo by entering the address in your browser.
  • Scroll to the Try Apollo now area.
  • Enter Developer Relations Lead, Head of Developer Relations, Director of Developer Relations, VP of Developer Relations in the person titles field.
  • Enter Series B developer tools in the q keywords field.
  • Set the page field to 1.
  • Set the per page field to 20.

How do these filters work?

  • The person titles option matches job titles. Several values widen the range of leadership titles.
  • The q keywords option matches free text across each person plus their company.
  • The page option chooses the result page. The per_page option controls how many records Apollo returns.
Run the people search

Alexandria passes your filters to the Apollo people/search capability. Apollo returns person previews in a structured response that your later script can process.

Before you click Run, which filter do you think will narrow the results most?

  • Click Run to submit the people search.

You should see a people array containing person objects. Each object can include id, first_name, last_name, title, organization, plus has_email.

That first response is a real milestone. Your audience description now produces structured person records you can inspect.

Search did not return records?

  • Read any provider terms that Firecrawl presents before the first call.
  • Accept the provider terms only if you agree to them.
  • Replace Series B developer tools with developer tools if the people array is empty.
  • Click Run again after changing the keywords.

Help me troubleshoot an empty Apollo people-search response.

Verify the prospect records

Person previews let you test the quality of your search before spending time on company enrichment. The first few objects show whether the role plus company criteria are producing a useful candidate pool.

Before you inspect the first three objects, how many do you expect to match both the role criteria plus the company criteria?

  • Locate the people array in the JSON response.
  • Check the title field in the first three person objects.
  • Check the organization field in the same objects for company details.
  • Check the has_email field for an email-availability signal.
  • Keep the JSON response visible for your checkpoint.

You should see one or more person objects with a relevant developer-relations title. You should also see organization data attached to the records.

What does has_email tell you?

The has_email field helps you identify records that may support a later work-email lookup. This search does not reveal or collect an email address.

Your first prospect records are back as JSON. Next up, you will enrich their companies with funding details plus technology data.

Enrich Company Records

Your previous search returned prospect records. Those records show who matches your audience.

The list still needs company context before it can support useful outreach. Company enrichment turns a company domain into a structured profile.

In this step, you will use Firecrawl Alexandria with Apollo to add funding data. Each profile can also include detected technologies.

In this step, get ready to:
  • Prepare a unique list of company domains.
  • Enrich each selected company with funding data.
  • Enrich each selected company with technology data.
Prepare unique company domains

A company domain gives you a consistent key for matching company data to a person. A unique domain list also prevents repeated enrichment calls for prospects who share an employer.

  • Switch back to the people-search JSON from earlier.
  • Select the prospect records that match your developer-relations criteria.
  • Identify the company domain inside each selected prospect record.
  • Make a deduplicated list of those domains in the same workspace as your returned JSON.
  • Select the Apollo capability named companies/enrich.
  • Review its response contract to confirm that it covers funding data.
  • Review its response contract to confirm that it covers detected technologies.
  • Review the listed execution price to determine the credit cost of one test call.

Why start with one company?

The first company acts as a schema test. It shows how Apollo structures the returned profile before you process the rest of your list.

Each Alexandria capability displays its execution price before the call. A one-domain test keeps your first credit spend controlled.

Enrich one company first

The next enrichment uses credits. Starting with one domain lets you confirm the match before spending credits on the remaining companies.

Before you run it, which extra company details do you expect to appear beside the person data?

  • Choose the first domain from your unique-domain list.
  • Use that domain as the input for companies/enrich.
  • Execute the capability from the same Firecrawl workflow used for your people search.

You should see a structured company profile in the returned JSON. The profile should include funding details plus detected technologies when Apollo has data for that company.

  • Compare the returned company domain with the domain in the matching prospect record.
  • Attach the complete returned company profile to that prospect record.

Good progress. One prospect now carries company context alongside the original person data.

Enrich the remaining companies

One company profile belongs to every prospect with the same domain. Apollo can bulk-enrich up to ten companies in one call.

  • Select the Apollo capability named companies/bulk-enrich.
  • Review the capability inputs for company domains.
  • Review the response contract for funding data.
  • Review the response contract for detected technologies.
  • Review the listed execution price before processing the remaining domains.
  • Divide the remaining unique domains into groups containing no more than ten companies.

Before you run the groups, do you expect the number of returned profiles to match the number of unique domains?

  • Execute the bulk enrichment capability for each group.

You should see one structured company profile for each domain that Apollo resolves. Each returned profile should contain the available funding data plus detected technologies.

  • Match each returned profile to prospect records with the same company domain.
  • Attach each matched profile to its prospect records.

Before you inspect the combined JSON, how many selected prospects should now carry company context?

  • Inspect every selected prospect record in the combined JSON.

You should see every selected prospect retain the original person data. Each matching record should also carry funding details plus detected technologies.

Missing company details?

  • Confirm that the company domain in the enrichment result matches the domain in the prospect record.
  • Remove duplicate domains before rerunning a bulk group.
  • Keep unavailable provider values empty instead of guessing.

Ask for help with the exact record that did not match. Help me match my company enrichment results to the correct prospect records.

Your prospect records now carry the company context needed for a stronger shortlist. Next, you will look for available work emails plus their verification status.

Find and Verify Work Emails

Your prospect records now carry funding context. They also carry technology context.

This step uses Apollo through Firecrawl Alexandria to check a small shortlist for work emails. The provider status lets you distinguish verified results from misses.

In this step, get ready to:
  • Build a focused shortlist from your people-search results.
  • Run work-email lookups for the shortlisted prospects.
  • Identify which returned records have verified status.
Build a focused shortlist

Email lookups use credits. A shortlist keeps those credits focused on prospects who already fit your criteria.

  • Return to the JSON records from your people search.
  • Filter the records to entries where has_email is true.
  • Keep a maximum of three prospects whose current title matches your developer-relations criteria.
  • Confirm each selected company still matches the Series B funding criterion.
  • Confirm each selected company still matches the developer-tools criterion.

Your shortlist now contains up to three relevant prospects with an email on record. These are the only people whose contact records you check in this pass.

Run the email lookups

Control credits and contact data

This lookup spends credits. A small first pass keeps the cost predictable.

Apollo person match costs 30 credits per matched person. A miss is free. Three matched people use at most 90 credits.

Your shortlist should contain only contacts tied to a lawful outreach purpose. A provider status does not give consent to contact someone.

The first call may require an organization admin to accept the provider terms.

  • Open the Apollo API page in your browser.
  • Select Person match under Try Apollo now.
  • Read the listed execution price before starting the lookup.
  • Copy the requested person values from your first shortlisted JSON record into the matching inputs.
  • Add the requested person values for each remaining shortlisted record.

Before the lookup runs, do you expect every shortlisted prospect to return a verified work email? Hold that prediction for the result.

  • Click Run to submit the person matches.

You will see a matched contact record for each successful lookup. Each returned work email includes the provider status.

Lookup blocked by provider terms?

  • Follow the returned requiresAction.url if the response shows THIRD_PARTY_DATA_TERMS_REQUIRED.
  • Ask an organization admin to review the provider terms if your account lacks permission.
  • Run the same Person match again after the terms are accepted.

Help me resolve a blocked Apollo person match.

That is the sensitive part handled. Your shortlist now has live lookup results without spending credits across the full prospect list.

Identify the verified records

An email address stays useful only when it remains paired with the right person. The provider status supplies the evidence you use to identify verified records.

  • Compare each returned name with its source prospect record.
  • Compare each returned current title with its source prospect record.
  • Compare each returned employer with its source prospect record.
  • Identify each email whose provider status says verified.
  • Keep unmatched prospects marked as having no returned work email.
  • Keep the lookup result available beside the enriched prospect JSON for the next step.

Before the final review, how many records do you expect to carry verified status? Hold that number while you check the shortlist.

  • Check that every returned email record includes its provider status.
  • Count the records whose status identifies the email as verified.
  • Confirm that every verified result still matches the original prospect.

You should now see a clear verification status beside each returned work email. Records with verified status are ready to identify during the CSV step.

Your shortlist now carries checked work-email results with their verification statuses. Next up, you will turn the enriched prospect records into a CSV.

Export Your Prospect List

Your Firecrawl workflow now holds prospect records as JSON. Each record includes the company enrichment from your search. Your shortlisted email records also include their verification status.

In this step, you will consolidate that workflow into a local script. The script will write 20 complete records to a CSV file that you can review in a spreadsheet.

In this step, get ready to:
  • Assemble the complete prospect workflow in prospect_list.py.
  • Write 20 enriched prospect rows to prospects.csv.
  • Open the exported list in your spreadsheet application.
Assemble the export script

The local script brings your successful requests into one repeatable workflow. It also flattens the nested response data into one row per prospect.

What should the script preserve?

The script searches for developer-relations leads at Series B developer-tools companies. It keeps the first 20 matching records.

  • The prospect's name.
  • The prospect's role.
  • The company name.
  • The company funding details.
  • The company technology data.
  • The available work email.
  • The available work-email verification status.

A missing work email stays blank. The prospect remains in the list so the export still contains 20 rows.

  • Create prospect_list.py from the workflow requirements above.
  • Configure the script to read your Firecrawl API key from the secure location you used earlier.
  • Save prospect_list.py.

Before you run the script, what file do you expect it to create?

  • Run prospect_list.py from your local Python environment.

You should see prospects.csv beside the script. That is the handoff complete: your API results now have a spreadsheet-ready format.

CSV file missing?

  • Confirm that the script writes the output to prospects.csv.
  • Check that the export receives the enriched prospect records before it writes the rows.
  • Keep records with unavailable work emails. Leave those contact fields blank.

Help me debug why prospect_list.py did not create a complete CSV file.

Open and verify the CSV

A useful export keeps every prospect aligned with the correct company data. Opening the file makes missing rows or shifted columns easy to spot.

What should the table contain?

The header row should identify the prospect fields. It should also identify the company enrichment fields.

Each data row should represent one prospect. Work-email verification status should stay attached to the matching work email.

Before you open the export, do you expect the spreadsheet to show 20 data rows or 20 rows including the header?

  • Use your spreadsheet application's file picker to open prospects.csv.

You should see a header row followed by 20 prospect rows.

  • Count the data rows below the header.

The count should be exactly 20.

  • Inspect several rows across the full width of the spreadsheet.

You should see names, roles, companies, funding details, and technology data on the same rows. Available work emails should show their matching verification status.

Your 20-row prospect list is ready to review or share through a spreadsheet. Next up, you will return to the Firecrawl dashboard to measure how many credits the complete run used.

Review Credit Usage

Your 20-prospect CSV is open in a spreadsheet. You have turned the original audience description into a usable prospect list.

The final question is how many credits the data run used. The Firecrawl dashboard holds the current balance needed to answer it.

In this step, get ready to:
  • View the post-run free monthly credit balance.
  • Compare the initial balance with the post-run balance.
  • Calculate the credits used by the completed data run.
View the post-run balance

A credit balance is a snapshot of your available allowance at one moment. Capturing a second snapshot after the run makes its usage measurable.

  • Switch back to the browser tab with your Firecrawl dashboard from earlier.
  • Locate the displayed free monthly credit balance.
  • Enter the initial free monthly credit balance you recorded earlier here: your initial credit balance.
  • Enter the current free monthly credit balance here: your post-run credit balance.

That is the second snapshot captured. You now have both values needed to measure the run.

Can't find the balance?

  • Refresh the Firecrawl dashboard to load the latest account information.
  • Confirm that the signed-in account matches the account used for this project.
  • Return to the main dashboard view to look for the monthly credit information.

Help me locate my post-run credit balance in the Firecrawl dashboard.

Calculate the credits used

Subtracting the current balance from the initial balance gives the credits consumed between the two checks. These snapshots frame your project run.

Before you subtract the balances, do you expect the current balance to be higher or lower than the initial balance?

  • Subtract your post-run credit balance from your initial credit balance using a calculator.
  • Enter the result here: credits used by your run.
  • Compare the calculated result with the balance drop shown by the two dashboard snapshots.

You should see that the post-run balance is lower than the initial balance. The difference is the measured credit usage from your search, enrichment, and email lookup.

Seeing an unexpected result?

  • Reverse the subtraction if your result is negative.
  • Refresh the dashboard if the post-run balance has not updated.
  • Check whether another Firecrawl run occurred between the two balance snapshots.

Help me check my Firecrawl credit calculation.

Strong finish. Your 20-row prospect list now has a measured credit cost.

Secret mission

Rank a Five-Person Outreach Shortlist

Your spreadsheet already contains enough evidence to choose a focused first five. This challenge turns those signals into an anonymized outreach shortlist without changing the original CSV.

Clean Up Your Resources

Clean Up Your Resources

The search is finished, so choose whether to keep the project ready, pause it for later, or remove it completely. The local files create no ongoing cost or credit use while idle.

Resources you used:

  • The prospect_list.py script used to search people, enrich companies, check shortlisted work emails, and write the CSV.
  • The prospects.csv file containing 20 prospect rows with names, roles, companies, funding details, technology data, and available work-email verification status.
  • The Firecrawl API key stored securely for the project.

Keep everything running

No cleanup action is needed. Choose this option if you are still using the prospect list for a lawful purpose.

  • Keep prospect_list.py available for future prospect searches.
  • Retain prospects.csv only while you have a lawful reason to hold its contact data.
  • Restrict access to prospects.csv while it contains names plus available work emails.
  • Keep the API key in the secure storage you already use.
  • Return to the dashboard before another run to check your remaining monthly credits.

Pause - I'll come back to this later

Close the project while preserving the reusable script for later. No local process needs to stay running.

  • Close prospects.csv in your spreadsheet application.
  • Keep prospect_list.py in its current location.
  • Delete prospects.csv if you do not have a lawful reason to retain its contact data.
  • Store prospects.csv securely if you do have a lawful reason to retain it.
  • Keep the API key in secure storage for your planned return.
  • Confirm that prospects.csv no longer appears in its folder if you deleted it.
  • Return to the dashboard before resuming the project to check your monthly credit balance.

Delete - I don't want to use this again

This option removes the project key plus both local files. Deleting the contact file is permanent, so it is reasonable to pause if its retention status is unclear.

  • Confirm that you no longer have a lawful reason to retain the contact data in prospects.csv.
  • Return to the Firecrawl dashboard from earlier.
  • Use the dashboard's API key management area to locate the key used by prospect_list.py.
  • Select the available option to revoke that key.
  • Confirm that the dashboard no longer shows the key as active.
  • Remove the revoked key from the secure location where you stored it.

That closes off the sensitive access. The revoked key can no longer authorize requests for this project.

  • Close prospects.csv in your spreadsheet application.
  • Return to the folder containing prospect_list.py and prospects.csv with your computer's file manager.
  • Permanently delete prospects.csv.
  • Permanently delete prospect_list.py.
  • Confirm that neither file appears in the folder.

You have closed the sensitive-data loop. The CSV plus its contact records are no longer in the project folder.

Nice Work!

Nice Work!

You did it. You turned a plain-language audience description into a 20-row prospect spreadsheet using public company data from Firecrawl.

What you learned:

  • Translated the developer-relations and Series B developer-tools criteria into a people search. Confirmed the first matching prospect records as JSON.
  • Attached company funding details to matching prospect records. Added company technology data. Checked a shortlist for work emails with verification status.
  • Created prospects.csv with 20 prospect rows. Opened the CSV in a spreadsheet application. Compared the Firecrawl credit balances to measure the run.
  • Secret Mission: Took on the optional challenge to push the prospect-list workflow further.

Ready to quiz yourself?