Import recently funded companies from Crunchbase into HubSpot using n8n

medium complexityCost: $0-24/mo

Prerequisites

Prerequisites
  • n8n instance (cloud or self-hosted)
  • Crunchbase API key (requires Enterprise or API/Data License plan)
  • HubSpot private app token with crm.objects.companies.read and crm.objects.companies.write scopes
  • Custom HubSpot company properties for funding data (recommended: funding_stage, funding_amount, funding_date, investors)
  • n8n credential configured for HubSpot
Crunchbase API requires Enterprise plan

The search endpoints used in this workflow (/searches/funding_rounds, /searches/organizations) require a Crunchbase Enterprise or API/Data License plan. The Pro plan only provides Zapier integration and CSV exports, not direct API access. Pricing starts at ~$49/mo for basic API access.

Step 1: Add a schedule trigger

Create a new workflow and add a Schedule Trigger node:

  • Rule: Every day at 8:00 AM (or weekly on Mondays — adjust to your preferred cadence)

This kicks off a daily check for new funding rounds.

Step 2: Search Crunchbase for recent funding rounds

Add an HTTP Request node to search for funding rounds announced in the last 30 days:

  • Method: POST
  • URL: https://api.crunchbase.com/api/v4/searches/funding_rounds
  • Headers: X-cb-user-key: YOUR_CRUNCHBASE_API_KEY
  • Body:
{
  "field_ids": [
    "identifier",
    "announced_on",
    "money_raised",
    "funded_organization_identifier",
    "investment_type",
    "investor_identifiers"
  ],
  "query": [
    {
      "type": "predicate",
      "field_id": "announced_on",
      "operator_id": "gte",
      "values": ["{{$now.minus(30, 'days').format('yyyy-MM-dd')}}"]
    },
    {
      "type": "predicate",
      "field_id": "investment_type",
      "operator_id": "includes",
      "values": ["series_a", "series_b", "series_c", "series_d"]
    }
  ],
  "limit": 100
}
Filter by funding stage

Adjust the investment_type filter to match your ICP. Series A companies are actively building and buying tools. Seed-stage may be too early. Series C+ may already have established vendor relationships.

Step 3: Loop through funding rounds

Add a Split In Batches node to iterate over the entities array from the Crunchbase response. Each entity contains the funding round details and a reference to the funded organization.

Step 4: Fetch organization details

For each funding round, add an HTTP Request node to get company details:

  • Method: GET
  • URL: https://api.crunchbase.com/api/v4/entities/organizations/{{ $json.properties.funded_organization_identifier.uuid }}
  • Headers: X-cb-user-key: YOUR_CRUNCHBASE_API_KEY
  • Query params: field_ids=short_description,categories,location_identifiers,num_employees_enum,website_url,linkedin

Step 5: Filter for ICP matches

Add an IF node to filter companies by your criteria:

  • Condition 1: num_employees_enum matches your target range (e.g., c_0051_0100, c_0101_0250)
  • Condition 2: Company has a website_url (needed for HubSpot domain)

Step 6: Check for existing companies in HubSpot

Add an HTTP Request node:

  • Method: POST
  • URL: https://api.hubapi.com/crm/v3/objects/companies/search
  • Body:
{
  "filterGroups": [{
    "filters": [{
      "propertyName": "domain",
      "operator": "EQ",
      "value": "{{ $json.properties.website_url.replace('https://', '').replace('http://', '').replace('www.', '').split('/')[0] }}"
    }]
  }]
}

Add an IF node: proceed only if total equals 0.

Step 7: Create company in HubSpot

Add an HTTP Request node:

  • Method: POST
  • URL: https://api.hubapi.com/crm/v3/objects/companies
  • Body:
{
  "properties": {
    "domain": "{{ $json.org.properties.website_url }}",
    "name": "{{ $json.org.properties.identifier.value }}",
    "industry": "{{ $json.org.properties.categories[0].value }}",
    "description": "{{ $json.org.properties.short_description }}",
    "funding_stage": "{{ $json.round.properties.investment_type }}",
    "funding_amount": "{{ $json.round.properties.money_raised.value }}",
    "funding_date": "{{ $json.round.properties.announced_on }}",
    "investors": "{{ $json.round.properties.investor_identifiers.map(i => i.value).join(', ') }}"
  }
}
Create custom properties first

HubSpot will reject properties that don't exist. Before running this workflow, create the custom company properties: funding_stage (single-line text), funding_amount (number), funding_date (date), and investors (single-line text) in HubSpot Settings → Properties.

Step 8: Activate and test

  1. Click Execute Workflow to run a test pass
  2. Verify companies appear in HubSpot with correct funding data
  3. Toggle the workflow to Active

Cost

  • n8n Cloud Starter: $24/mo for 2,500 executions. Daily run = ~30 executions/month (1 per day).
  • Self-hosted n8n: Free.
  • Crunchbase API: Enterprise plan required. Pricing varies — contact Crunchbase sales. Basic API access starts around $49/mo.

Need help implementing this?

We build and optimize automation systems for mid-market businesses. Let's discuss the right approach for your team.