Quickstart: B2B Company Enrichment API

Get structured company data from any domain in under 5 minutes. Send a company URL, domain, or name — get back a clean JSON profile with industry, size, tech stack, social links, and more.

Prerequisites

  • A RapidAPI account (sign up free)
  • Your RapidAPI key (found in any API's "Code Snippets" panel)
  • curl, Node.js 18+, or Python 3.8+

Step 1: Get Your API Key

Subscribe to the B2B Company Enrichment API on RapidAPI. The free tier gives you 25 requests per day — enough to test your integration end to end.

Your API key is passed via the X-API-Key header on every request.

Base URL:

https://b2b-enrichment.p.rapidapi.com

Step 2: Make Your First Request

The single endpoint you need is POST /api/enrich. Send a company field and (optionally) a fields array to control which data comes back.

cURL

curl -X POST "https://b2b-enrichment.p.rapidapi.com/api/enrich" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: YOUR_API_KEY" \
  -d '{
    "company": "stripe.com",
    "fields": ["name", "industry", "size", "techStack"]
  }'

JavaScript (Node.js / fetch)

const response = await fetch(
  "https://b2b-enrichment.p.rapidapi.com/api/enrich",
  {
    method: "POST",
    headers: {
      "Content-Type": "application/json",
      "X-API-Key": process.env.RAPIDAPI_KEY,
    },
    body: JSON.stringify({
      company: "stripe.com",
      fields: ["name", "industry", "size", "techStack"],
    }),
  }
);

const result = await response.json();

if (!response.ok) {
  console.error(result.error);
  process.exit(1);
}

console.log(result.data);

Python

import os
import requests

response = requests.post(
    "https://b2b-enrichment.p.rapidapi.com/api/enrich",
    headers={
        "Content-Type": "application/json",
        "X-API-Key": os.environ["RAPIDAPI_KEY"],
    },
    json={
        "company": "stripe.com",
        "fields": ["name", "industry", "size", "techStack"],
    },
    timeout=30,
)

result = response.json()

if not response.ok:
    raise RuntimeError(result["error"]["message"])

print(result["data"])

Step 3: Parse the Response

A successful response looks like this:

{
  "success": true,
  "data": {
    "name": "Stripe",
    "industry": "Fintech / Payments",
    "size": "5001-10000",
    "techStack": ["React", "Ruby", "Go", "AWS"]
  },
  "metadata": {
    "source": "https://stripe.com",
    "enrichedAt": "2026-03-22T10:00:00.000Z",
    "responseTimeMs": 3200,
    "tokensUsed": 1250,
    "fieldsRequested": ["name", "industry", "size", "techStack"]
  }
}

Every response includes:

  • successtrue if enrichment worked, false on error.
  • data — The enriched fields. Any field the API can't determine returns null.
  • metadata — The resolved URL, timestamp, processing time, and token usage.

If something goes wrong, you get an error object instead:

{
  "success": false,
  "error": {
    "code": "INVALID_REQUEST",
    "message": "company is required"
  }
}

Check response.ok (or response.status_code in Python) before accessing data.

Step 4: Choose Your Fields

You don't have to request every field. Pass only what you need to reduce response time and token usage.

FieldTypeWhat You Get
namestringOfficial company name
domainstringPrimary domain
industrystringIndustry or vertical
sizestringEmployee-count band (e.g., 51-200)
descriptionstring1-2 sentence summary
techStackstring[]Detected technologies
socialLinksobjectSocial profile URLs by platform
foundedstringYear founded

Omit the fields parameter entirely to get all eight fields.

Step 5: Handle Rate Limits

The API enforces 10 requests per minute per key. Every response includes rate-limit headers:

X-RateLimit-Limit: 10
X-RateLimit-Remaining: 7
X-RateLimit-Reset: 1710950460

If you hit the limit, you'll get HTTP 429. Wait until X-RateLimit-Reset (Unix timestamp) before retrying.

For batch workflows, add a 6-second delay between calls to stay within the limit.

What's Next?