Opening Problem Statement
Meet Sarah, a business analyst at a VC firm who spends over two hours each morning manually collecting the latest startup fundraising data from Crunchbase. She needs timely, accurate details about recent Series A, Series B, and Seed rounds to identify promising investment opportunities. The manual process is not only time-consuming but also prone to errors and outdated information by the time she finalizes her daily report.
Sarah’s frustration grows as the sheer volume of data complexity overwhelms her. Manually cross-referencing company profiles, funding amounts, and associated details wastes valuable hours each week—a drain on productivity and valuable insights. She dreams of an automated process that regularly fetches and organizes fresh fundraising data directly into her team’s shared Google Sheets.
What This Automation Does
This specific n8n workflow automates the daily extraction, enrichment, and storage of Crunchbase funding rounds data using the Piloterr API and Google Sheets. When triggered, it:
- Automatically runs every morning at 8 AM to capture the latest fundraising events (Series A, Series B, and Seed rounds) announced within the last day.
- Fetches raw fundraising round data securely from Piloterr’s Crunchbase API using authenticated HTTP requests.
- Splits the API response to process individual fundraising events separately.
- Enriches company data by retrieving additional profile details such as website, traffic metrics, employee counts, and LinkedIn URLs.
- Uses JavaScript code within a Code node to extract LinkedIn URLs from nested social network data structures.
- Consolidates and merges the enriched data before appending or updating the structured rows in a designated Google Sheets spreadsheet—ensuring a single source of truth for investment tracking.
- Saves Sarah and her team hours daily, eliminating tedious manual copy-pasting and reducing human errors, accelerating decision-making.
Prerequisites ⚙️
- n8n account (cloud or self-hosted) with workflow creation permissions.
- Piloterr account with API access and API key for authenticated requests to Crunchbase data (https://piloterr.com).
- Google account with a Google Sheets document prepared for appending and updating fundraising data.
- Credentials must be configured in n8n for Piloterr API (HTTP Header Auth) and Google Sheets OAuth2.
Step-by-Step Guide
1. Schedule Trigger to Run Workflow Daily at 8 AM
In n8n, add a Schedule Trigger node. Set it to trigger every day at 8 AM. This automates daily data fetching without manual intervention.
Common mistake: Forgetting to set the timezone correctly could cause the workflow to run at unintended times.
2. Configure HTTP Request Nodes for Series A, B, and Seed Fundraises
Add three separate HTTP Request nodes named “Piloterr – Get Recent Fundraise – Serie A”, “Serie B”, and “Seed”. Configure each with the Piloterr API endpoint: https://piloterr.com/api/v2/crunchbase/funding_rounds.
Set query parameters specifically: days_since_announcement=1 and investment_type=series_a|series_b|seed respectively.
Set authentication to HTTP Header Auth with your Piloterr API key credential.
This fetches fresh fundraising rounds data daily by investment type.
Common mistake: Incorrect API keys or mismatched query parameters can cause 401 Unauthorized errors or empty responses.
3. Split the API Response into Individual Fundraising Events
Use the Item Lists (ItemLists) node named “Split results” to split the API response’s results array into separate items for individual processing.
This allows the workflow to handle each fundraising round data item distinctly.
4. Prepare Core Data for Each Fundraising Round
Insert a Set node named “Prepare data” to extract and rename key fields such as investment type, money raised (in USD), announcement date, company name, company permalink, and event permalink into simplified JSON fields.
This prepares a clean dataset for enrichment and final output.
5. Enrich Company Data with Additional Profile Info
Add another HTTP Request node (“Piloterr – Enrich company”) to call the endpoint https://piloterr.com/api/v2/crunchbase/company/info.
Use batch requests with a batch size of 3 to optimize API calls. Supply the company permalink URL as a query parameter for enrichment.
Continue on fail is enabled to allow resilience for any missing data.
6. Extract LinkedIn URL Using Code Node
Use a Code node called “Get Linkedin URL from object” executing JavaScript:
// Find the LinkedIn object
let linkedinObject = $json.social_networks.find(e => e.name === 'linkedin');
// If the LinkedIn object exists, get the URL; otherwise, set null
$input.item.json.linkedin_url = linkedinObject ? linkedinObject.url : null;
if (!$input.item.json.linkedin_url) {
console.error('No LinkedIn URL found!');
}
return $input.item;
This extracts nested social network URLs properly for use in Google Sheets.
7. Prepare Additional Fields Before Importing to Google Sheets
Insert another Set node named “Prepare data before importing to Gsheets” to format fields like website domain name (extracted from URL using regex), monthly traffic, total funding, employee count, country, and founded date.
8. Merge Enriched and Prepared Data
Use the Merge node to combine data streams from enriched company info and prepared data into a single unified output.
9. Append or Update Fundraising Data in Google Sheets
Add the Google Sheets node configured to append or update data in a specific sheet by matching the event_link column, ensuring no duplicate entries.
Map all relevant columns: company name, website, investment type, money raised, LinkedIn URL, announcement date, funding totals, monthly traffic, employee count, country, founded date, and links.
Customizations ✏️
- Modify investment types: In HTTP Request nodes, change or add new
investment_typequery parameters to track different rounds like Series C or D. - Date range adjustment: Adjust
days_since_announcementparameter in HTTP Request nodes to capture older fundraising events. - Change Google Sheets target: Update the Google Sheets node’s Document ID or Sheet Name to save data in different spreadsheets or tabs.
- Batch size tuning: Adjust the batch size parameter in the company enrichment HTTP Request node to optimize performance or API limits.
- Remove unused funding rounds: Delete the HTTP Request nodes for Series B or Seed if only Series A data is required.
Troubleshooting 🔧
Problem: “401 Unauthorized” error from Piloterr API
Cause: Incorrect or missing API key in HTTP Header Auth credentials.
Solution: Go to n8n Credentials, verify Piloterr API key is correct in the HTTP Header Auth credential used.
Problem: Data not appending correctly in Google Sheets
Cause: Incorrect column matching or improper field mapping.
Solution: Check the Google Sheets node’s “Matching Columns” parameter is set to event_link and that all mapped fields correspond with the sheet’s column headers exactly.
Problem: LinkedIn URL missing in output
Cause: Social network data structure changed or LinkedIn entry missing.
Solution: Verify the JSON path in the Code node and add conditional debugging to handle missing LinkedIn URLs gracefully.
Pre-Production Checklist ✅
- Test all HTTP requests with real Piloterr API credentials to confirm valid data retrieval.
- Ensure the Google Sheets document has the correct columns and matching configuration.
- Validate the Code node correctly extracts LinkedIn URL for diverse company profiles.
- Verify the Schedule Trigger fires correctly at expected times.
- Backup existing Google Sheets data before first automated import.
Deployment Guide
Activate the workflow in n8n by enabling the Schedule Trigger node. This will run the process automatically every day at 8 AM.
Monitor execution logs in n8n for errors, using retry and alerting mechanisms as necessary based on your environment.
FAQs
Can I use this workflow to track other investment types beyond Series A, B, and Seed?
Yes, simply change the investment_type parameter in the HTTP Request nodes to the desired round type like Series C or D.
Does this consume a lot of API credits?
The workflow makes a limited number of API calls once daily with batching to minimize usage, but monitor your Piloterr API quota.
Is my fundraising data secure in this automation?
The workflow uses authenticated API calls and OAuth for Google Sheets. Keep your credentials secure and do not share publicly.
Conclusion
By setting up this n8n workflow, you have automated the tedious task Sarah once faced—manually collecting and updating Crunchbase fundraising data in Google Sheets. This saves business analysts hours every week, improves data accuracy, and accelerates investment decisions.
Next, consider extending this workflow to include Series C funding, investor contact information enrichment, or integrating Slack notifications to alert your team about new fundraising events instantly.
With this automation, you’re one step closer to real-time investment tracking made easy.