Skip to main content
Technical Guides

Company Enrichment: Firmographic and Financial Data via Rodz

Peter Cools · · 17 min read

In a nutshell: The Rodz API offers three company enrichment endpoints, firmographic, financial and French SIRENE, that let you turn a domain name, a company name or a SIREN/SIRET number into a complete, structured company profile. This guide walks through each endpoint, explains the input and output fields, provides ready-to-use cURL examples and answers the most common questions. By the end you will know which endpoint to use, when to combine them, and how to integrate enriched data into your sales and marketing workflows.

What Is Company Enrichment?

Company enrichment is the process of taking a thin company record (a name, a domain, a registration number) and expanding it into a rich, structured profile. Instead of a row in your CRM that says “Acme Corp” and nothing else, enrichment fills in the industry, headcount, revenue, headquarters address, legal status, founding date and dozens of other fields that make segmentation, scoring and personalization possible.

Manual research can fill the same gaps, but it does not scale. A sales rep spending five minutes researching each lead before writing an email will burn hours every week on work that an API call handles in milliseconds. Enrichment removes that friction. It keeps your database accurate, your routing rules informed, and your outreach relevant.

The Rodz API groups company enrichment into three specialized endpoints. Each one pulls from different data sources, returns different fields, and serves different use cases. You can call them independently or chain them together to build a 360-degree company profile.

This article is part of the Rodz API technical guide series. For a full list of every endpoint, rate limit and error code, see the API Reference.

Prerequisites

Before calling any enrichment endpoint, make sure the following are in place:

  1. A Rodz account with API access enabled. API access is available on all paid plans. Register at app.rodz.io if you have not already.
  2. Your API key, generated from the Rodz dashboard under Settings > API Keys. If you need help with this step, follow the authentication and first request guide.
  3. cURL installed on your machine. macOS and Linux include it by default. Windows users can use Git Bash or WSL.
  4. A clear use case. Know what data you need before you call an endpoint. If you only need headcount and industry, the firmographic endpoint is enough. If you need revenue and profit margins, reach for the financial endpoint. If you work with French companies and need SIREN/SIRET details, the SIRENE endpoint is the one to use.

Set your API key as an environment variable so the examples below stay clean:

export RODZ_API_KEY="your_api_key_here"

All requests go to the base URL https://api.rodz.io/v1. Authentication is handled via a Bearer token in the Authorization header.

Endpoint 1: Firmographic Enrichment

What It Returns

The firmographic endpoint takes a company domain or name and returns the structural profile of the organization: industry, sub-industry, employee count, headquarters location, founding year, company type (public, private, non-profit), website, social media links and a short description. These are the fields you need for segmentation, lead scoring and ICP filtering.

Firmographic data is sourced from public business registries, company websites, social profiles and aggregated third-party datasets. Rodz normalizes everything into a consistent schema so you do not have to deal with format differences across sources.

When to Use It

Use the firmographic endpoint when you need to qualify or segment companies at scale. Typical scenarios include:

  • CRM hygiene. You import a list of 5,000 leads from an event. Half of them have nothing but a company name. Run them through firmographic enrichment to fill in industry, size and location so your routing rules can assign them to the right sales rep.
  • Lead scoring. Your scoring model weights headcount, industry and geography. Firmographic enrichment feeds those three inputs directly.
  • Account-based marketing. You are building a target account list and need to filter by revenue range, headquarters country or founding year. Firmographic data gives you the dimensions to slice on.

Request Format

curl -X POST https://api.rodz.io/v1/enrich/firmographic \
  -H "Authorization: Bearer $RODZ_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "domain": "example.com"
  }'

You can also identify the company by name instead of domain:

curl -X POST https://api.rodz.io/v1/enrich/firmographic \
  -H "Authorization: Bearer $RODZ_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "company_name": "Acme Corporation",
    "country": "US"
  }'

When using company_name, adding a country field improves match accuracy, especially for common names that exist in multiple markets.

Response Format

A successful 200 OK response looks like this:

{
  "status": "found",
  "company": {
    "name": "Acme Corporation",
    "domain": "example.com",
    "description": "Acme Corporation is a global technology company specializing in cloud infrastructure and developer tools.",
    "industry": "Technology",
    "sub_industry": "Cloud Computing",
    "employee_count": 1200,
    "employee_range": "1001-5000",
    "founded_year": 2011,
    "company_type": "private",
    "headquarters": {
      "city": "San Francisco",
      "state": "California",
      "country": "US",
      "postal_code": "94105"
    },
    "website": "https://example.com",
    "linkedin_url": "https://linkedin.com/company/acme-corporation",
    "twitter_url": "https://twitter.com/acmecorp",
    "logo_url": "https://logo.clearbit.com/example.com",
    "tags": ["SaaS", "B2B", "cloud", "developer tools"]
  },
  "confidence": 0.95,
  "enriched_at": "2026-03-08T10:24:11Z"
}

Key fields to note:

  • confidence is a score between 0 and 1 indicating how certain the match is. Anything above 0.85 is considered high confidence. Below 0.6, you should verify manually.
  • employee_count is the best estimate at the time of enrichment. It is updated periodically but may not reflect very recent hiring or layoffs.
  • tags are Rodz-generated labels derived from the company description, product pages and industry classification. They are useful for fine-grained filtering that goes beyond standard industry codes.

Handling Edge Cases

If the domain or company name cannot be matched, the API returns a 200 OK with "status": "not_found":

{
  "status": "not_found",
  "message": "No company matched the provided identifier."
}

This is not an error. A 404 is reserved for invalid endpoint paths, not empty search results. Build your integration to check the status field rather than relying on HTTP codes alone.

If you send both domain and company_name in the same request, domain takes precedence. The API will attempt to match on domain first and fall back to name only if the domain yields no result.

Endpoint 2: Financial Enrichment

What It Returns

The financial endpoint returns quantitative business metrics: annual revenue, revenue growth rate, profit margin, total funding raised, last funding round, funding stage, estimated valuation, fiscal year end and currency. These numbers help you prioritize accounts by budget capacity and growth trajectory.

Financial data is compiled from public filings (for listed companies), regulatory disclosures, funding databases and modeled estimates (for private companies). Rodz clearly labels modeled values with an "estimated": true flag so you can distinguish hard facts from projections.

When to Use It

Financial enrichment is valuable in scenarios where deal size, budget capacity or growth momentum matters:

  • Prioritizing outbound. You are selling a product that costs 50,000 EUR per year. Companies with less than 5M EUR in annual revenue are unlikely buyers. Financial enrichment lets you filter them out before your reps spend time on them.
  • Competitive displacement. You want to target companies that just raised a large round and are likely re-evaluating their tech stack. Combining the financial endpoint with signal data gives you timing and context in a single workflow.
  • Investor research. You are building a list of fast-growing companies in a specific sector. Revenue growth rate and funding stage are the two filters that matter most, and both come from this endpoint.

Request Format

curl -X POST https://api.rodz.io/v1/enrich/financial \
  -H "Authorization: Bearer $RODZ_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "domain": "example.com"
  }'

As with the firmographic endpoint, you can identify the company by name:

curl -X POST https://api.rodz.io/v1/enrich/financial \
  -H "Authorization: Bearer $RODZ_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "company_name": "Acme Corporation",
    "country": "US"
  }'

Response Format

A successful response:

{
  "status": "found",
  "company": {
    "name": "Acme Corporation",
    "domain": "example.com"
  },
  "financials": {
    "annual_revenue": 45000000,
    "revenue_currency": "USD",
    "revenue_growth_rate": 0.32,
    "estimated": false,
    "profit_margin": 0.12,
    "total_funding": 80000000,
    "last_funding_round": {
      "type": "Series C",
      "amount": 40000000,
      "currency": "USD",
      "date": "2025-09-15",
      "lead_investors": ["Sequoia Capital", "Accel"]
    },
    "funding_stage": "Series C",
    "estimated_valuation": 350000000,
    "valuation_estimated": true,
    "fiscal_year_end": "December",
    "last_updated": "2026-02-20"
  },
  "confidence": 0.88,
  "enriched_at": "2026-03-08T10:30:45Z"
}

A few things worth highlighting:

  • estimated at the financials level tells you whether revenue figures are modeled or sourced from filings. When true, treat the number as directional rather than exact.
  • valuation_estimated works the same way for the valuation field. Publicly traded companies will show market cap instead, with this flag set to false.
  • revenue_growth_rate is expressed as a decimal. A value of 0.32 means 32% year-over-year growth. Negative values indicate contraction.
  • last_updated shows when Rodz last refreshed the financial data for this company. If the date is more than six months old, consider re-enriching after a quarter.

Handling Partial Data

Not every company has a complete financial profile. Private companies rarely disclose revenue. Early-stage startups may have funding data but no revenue figure. The API handles this gracefully by returning null for any field it cannot populate:

{
  "status": "found",
  "company": {
    "name": "Stealth Startup Inc.",
    "domain": "stealthstartup.io"
  },
  "financials": {
    "annual_revenue": null,
    "revenue_currency": null,
    "revenue_growth_rate": null,
    "estimated": null,
    "profit_margin": null,
    "total_funding": 3000000,
    "last_funding_round": {
      "type": "Seed",
      "amount": 3000000,
      "currency": "USD",
      "date": "2026-01-10",
      "lead_investors": ["Y Combinator"]
    },
    "funding_stage": "Seed",
    "estimated_valuation": null,
    "valuation_estimated": null,
    "fiscal_year_end": null,
    "last_updated": "2026-02-28"
  },
  "confidence": 0.72,
  "enriched_at": "2026-03-08T10:32:00Z"
}

Build your integration to check for null values before writing to your CRM or running calculations. A missing revenue field is not a bug. It is a reflection of available data.

Endpoint 3: French SIRENE Enrichment

What It Returns

The French SIRENE endpoint queries the official INSEE SIRENE registry, the national database of all registered French businesses. It returns the SIREN number (9 digits, identifying the legal entity), SIRET number (14 digits, identifying a specific establishment), legal form (SAS, SARL, SA, etc.), NAF/APE code (French activity classification), registered address, registration date, active/inactive status, number of establishments and the official company name as registered with INSEE.

This is the authoritative source for French business data. Unlike firmographic data, which is aggregated from multiple sources, SIRENE data comes directly from a government registry. If you are doing business in France or selling to French companies, this endpoint gives you legally reliable identifiers.

When to Use It

The SIRENE endpoint is purpose-built for scenarios involving French businesses:

  • Compliance and due diligence. You need to verify that a French prospect is a real, active company before signing a contract. The SIRENE registry is the official source of truth.
  • Invoice generation. French B2B invoices require the SIRET number of both parties. Enriching your customer records with SIRET data eliminates manual lookups.
  • Market analysis in France. You want to count how many SAS companies in the “Software Publishing” NAF code were registered in the last 12 months. The SIRENE endpoint gives you the raw identifiers to build that analysis.
  • Deduplication. Two records in your CRM look like different companies but might be the same legal entity with different trading names. Matching on SIREN resolves the ambiguity.

Request Format

You can query by domain, company name or directly by SIREN/SIRET number:

curl -X POST https://api.rodz.io/v1/enrich/french-sirene \
  -H "Authorization: Bearer $RODZ_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "siren": "123456789"
  }'

Using a domain:

curl -X POST https://api.rodz.io/v1/enrich/french-sirene \
  -H "Authorization: Bearer $RODZ_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "domain": "example.fr"
  }'

Using a company name (add country: "FR" for best results, though the endpoint assumes France by default):

curl -X POST https://api.rodz.io/v1/enrich/french-sirene \
  -H "Authorization: Bearer $RODZ_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "company_name": "Exemple SAS"
  }'

When you provide a SIREN or SIRET, the match is exact. When you provide a domain or name, Rodz first resolves the company identity and then looks up the corresponding SIRENE record.

Response Format

{
  "status": "found",
  "company": {
    "name": "Exemple SAS",
    "domain": "example.fr"
  },
  "sirene": {
    "siren": "123456789",
    "siret_siege": "12345678900015",
    "legal_name": "EXEMPLE SAS",
    "legal_form": "SAS",
    "legal_form_code": "5710",
    "naf_code": "6201Z",
    "naf_label": "Computer programming activities",
    "registered_address": {
      "street": "12 Rue de la Paix",
      "postal_code": "75002",
      "city": "Paris",
      "country": "FR"
    },
    "registration_date": "2002-03-15",
    "active": true,
    "establishment_count": 3,
    "workforce_range": "50-99",
    "last_updated": "2026-03-01"
  },
  "confidence": 1.0,
  "enriched_at": "2026-03-08T10:35:20Z"
}

Notable fields:

  • siret_siege is the SIRET of the head office (siege social). If the company has multiple establishments, each one has its own SIRET, but the siege SIRET is the one used on invoices and contracts.
  • legal_form_code maps to the official INSEE legal form classification. 5710 is SAS. 5720 is SASU. 5499 is SARL. You can use this code for precise filtering.
  • naf_code is the French equivalent of SIC/NAICS codes. It classifies the company’s primary activity. 6201Z means “Computer programming activities.”
  • confidence is 1.0 when the match is based on an exact SIREN/SIRET lookup. It may be lower when matching by domain or name.
  • workforce_range comes from the INSEE declaration and may differ from the employee count in the firmographic endpoint, which uses broader data sources. For compliance purposes, use the SIRENE figure.

Handling Inactive Companies

The SIRENE registry includes inactive (ceased) companies. The API does not filter them out. If "active": false, the company has been deregistered, liquidated or dissolved. Always check this field before treating the record as a live prospect.

{
  "status": "found",
  "sirene": {
    "siren": "123456789",
    "active": false,
    "cessation_date": "2024-11-30"
  }
}

Comparison Table

FeatureFirmographicFinancialFrench SIRENE
EndpointPOST /enrich/firmographicPOST /enrich/financialPOST /enrich/french-sirene
InputDomain or company nameDomain or company nameDomain, company name, SIREN or SIRET
Geographic scopeGlobalGlobalFrance only
Data sourceAggregated (registries, web, social)Filings, funding databases, modelsINSEE SIRENE registry
Key fieldsIndustry, headcount, HQ, founding yearRevenue, funding, valuation, growthSIREN, SIRET, NAF code, legal form
Best forSegmentation, lead scoring, ICP matchingBudget qualification, prioritizationCompliance, invoicing, deduplication
Confidence range0.6 - 1.00.5 - 1.00.7 - 1.0 (exact SIREN = 1.0)
Partial resultsRare, most fields populatedCommon for private companiesRare, registry is comprehensive
Rate limit100 req/min (shared)100 req/min (shared)100 req/min (shared)

All three endpoints share the same rate limit of 100 requests per minute across your entire API key. If you are running bulk enrichment, stagger your calls or use exponential backoff on 429 Too Many Requests responses. See the API Reference for full details on rate limiting and error codes.

Combining Endpoints for a Complete Profile

The real power of these endpoints shows up when you chain them. A single company can be enriched across all three endpoints to build a profile that covers identity, financial health and legal standing.

Here is a practical workflow:

  1. Start with firmographic enrichment. Pass the domain. Get the company name, industry, headcount and location. This tells you whether the company fits your ICP.
  2. If it fits, call the financial endpoint. Same domain. Get revenue, funding stage and growth rate. This tells you whether the company can afford your product and whether the timing is right.
  3. If the company is French, call the SIRENE endpoint. Use the domain or the SIREN if you already have it. Get the legal entity details for compliance, invoicing and deduplication.

You can run steps 1 and 2 in parallel since they are independent calls. Step 3 only applies to French companies, so you can conditionally trigger it based on the country field from the firmographic response.

Store the combined result in your CRM or data warehouse. Use the enriched_at timestamps to schedule periodic re-enrichment (quarterly is a good cadence for most use cases).

Error Handling

All three enrichment endpoints follow the same error conventions as the rest of the Rodz API:

HTTP CodeMeaningWhat to Do
200Success (match found or not found)Check the status field
400Bad request (missing or invalid input)Review your JSON payload
401Unauthorized (missing or invalid API key)Check your Authorization header
403Forbidden (valid key, insufficient permissions)Verify your plan includes enrichment
429Rate limit exceededWait and retry with exponential backoff
500Internal server errorRetry after a short delay. Contact support if persistent

A 400 response includes a message field explaining what went wrong:

{
  "error": "bad_request",
  "message": "At least one of 'domain', 'company_name', or 'siren' is required."
}

For a full breakdown of error handling patterns, see the API Reference.

Frequently Asked Questions

How many credits does each enrichment call cost?

Each successful enrichment call (one where status is "found") consumes one credit from your plan’s monthly enrichment quota. Calls that return "not_found" do not consume credits. Calls that fail with a 4xx or 5xx error also do not consume credits.

Can I enrich companies in bulk?

The current API processes one company per request. For bulk enrichment, loop through your list and send individual requests. Respect the 100 requests per minute rate limit. If you need higher throughput, contact the Rodz team about enterprise rate limits. A dedicated batch endpoint is on the roadmap.

How fresh is the data?

Firmographic data is refreshed on a rolling basis, typically every 30 to 90 days depending on the company’s public footprint. Financial data is updated when new filings or funding announcements are detected. SIRENE data follows the INSEE update schedule, which is monthly. Each response includes a last_updated or enriched_at timestamp so you can assess freshness.

What happens if I send a domain that does not exist?

The API returns a 200 OK with "status": "not_found". It does not validate whether the domain is registered or reachable. It simply checks its data sources for a matching company. No match means no result, not an error.

Can I use the SIRENE endpoint for companies outside France?

No. The SIRENE endpoint queries the French INSEE registry, which only contains entities registered in France (including overseas territories). For non-French companies, use the firmographic and financial endpoints instead.

How does confidence scoring work?

Confidence reflects how certain Rodz is that the returned record matches the company you asked about. An exact SIREN lookup returns 1.0. A well-known domain like google.com returns 0.95+. An ambiguous company name with no country hint might return 0.6. Use the confidence score to set thresholds in your workflow. For automated CRM writes, a threshold of 0.85 is a good starting point. Below that, flag the record for manual review.

Do the endpoints support matching by LinkedIn URL?

Not currently. The accepted identifiers are domain, company_name (with optional country), and siren/siret (SIRENE endpoint only). LinkedIn URL matching is a planned feature. In the meantime, you can extract the company domain from the LinkedIn page and use that as your input.

Is there a sandbox or test mode?

Yes. Your Rodz dashboard includes a sandbox API key that returns mock data for all endpoints, including enrichment. Use it to build and test your integration without consuming credits. Switch to your production key when you are ready to go live. See the Getting Started guide for instructions on generating sandbox keys.

Next Steps

You now have a working understanding of all three company enrichment endpoints. The logical next steps depend on where you are in your integration:

  • If you have not made your first API call yet, start with the Getting Started guide. It covers authentication, environment setup and your first request in under ten minutes.
  • If you need the full list of endpoints, parameters and error codes, the API Reference has everything in one place.
  • If you want to explore the API interactively, head to the Rodz API documentation where you can test endpoints directly from your browser.

Company enrichment works best when it is part of a larger workflow. Combine it with Rodz intent signals to not only know who to talk to, but when to talk to them and what to say.

Share:

Generate your outbound strategy for free

Our AI analyzes your company and creates a complete playbook: ICP, personas, email templates, call scripts.

Generate my strategy