Skip to main content
Technical Guides

B2B Contact Enrichment: Find and Verify Emails with the Rodz API

Peter Cools · · 16 min read

In a nutshell: The Rodz API offers three endpoints for B2B contact enrichment: /enrich/contact returns a full professional profile from a LinkedIn URL or name-plus-company pair, /enrich/find-email discovers a verified professional email address, and /enrich/reverse-email takes an email and gives you the person behind it. This guide walks you through each endpoint with request parameters, response schemas, cURL examples, real-world use cases and a head-to-head comparison with Lusha, Kaspr and Apollo.

What Is B2B Contact Enrichment?

B2B contact enrichment is the process of augmenting a partial record (a name, a company, or a LinkedIn URL) with verified professional data: email addresses, phone numbers, job titles, company details and social profiles. Instead of working with incomplete CRM records and guessing at email patterns, enrichment fills in the blanks automatically so your sales and marketing teams can reach the right person with the right message.

Enrichment matters because incomplete data kills outbound campaigns before they start. If 30% of your lead list lacks email addresses, that is 30% of your pipeline you can never touch. Manual research does not scale. Pattern-based guessing (firstname.lastname@company.com) produces bounce rates that wreck your sender reputation. And buying pre-built lists introduces stale data that decays at roughly 30% per year.

The Rodz API tackles this with three purpose-built enrichment endpoints. Each one solves a specific data gap, and together they cover the most common scenarios in B2B prospecting workflows. You can call them individually when you need a single data point, or chain them into an automated pipeline that enriches every new lead the moment it enters your system.

Before enrichment tools became API-first, teams relied on services like Dropcontact or Fullenrich to clean and complete contact databases. The Rodz API brings this capability directly into your stack so you can enrich records programmatically, at scale, without switching between dashboards.

Prerequisites

Before making your first enrichment call, ensure you have the following ready:

  1. An active Rodz account with API access. API access is included in all paid plans. Sign up at https://app.rodz.io/register if you do not have one yet.

  2. Your API key. Generate it from the Rodz dashboard under Settings > API Keys. See our Getting Started guide for a step-by-step walkthrough.

  3. A tool for HTTP requests. cURL, Postman, Insomnia or any HTTP client library (Python requests, Node.js axios, etc.) will work. All examples below use cURL.

  4. Basic knowledge of REST APIs and JSON. You should be comfortable sending POST requests and reading JSON responses.

  5. At least one data point per contact. Each endpoint has specific minimum input requirements. You will need either a LinkedIn URL, a name-plus-company combination, or an email address depending on the endpoint you are using.

For the full list of all Rodz API endpoints, including rate limits, pagination and error codes, refer to the API Reference.

Endpoint 1: POST /enrich/contact

What It Does

The /enrich/contact endpoint is the most comprehensive of the three. Given a LinkedIn profile URL or a first name, last name and company domain, it returns a full professional profile. That profile includes the contact’s verified email address, phone number (when available), current job title, company name, company domain, LinkedIn URL and additional metadata such as location and seniority level.

This is the endpoint you reach for when you have a prospect’s LinkedIn profile or you know their name and company but need everything else. It is ideal for enriching lists exported from LinkedIn Sales Navigator, event attendee rosters, or CRM records that only contain a name and company.

Request Parameters

ParameterTypeRequiredDescription
linkedin_urlstringNo*The full LinkedIn profile URL of the contact.
first_namestringNo*The contact’s first name.
last_namestringNo*The contact’s last name.
companystringNo*The company domain (e.g., acme.com) or company name.
enrich_companybooleanNoSet to true to include full company data in the response. Default: false.

*You must provide either linkedin_url or the combination of first_name + last_name + company.

cURL Example

Using a LinkedIn URL:

curl -X POST https://api.rodz.io/v1/enrich/contact \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "linkedin_url": "https://www.linkedin.com/in/jandupont",
    "enrich_company": true
  }'

Using name and company:

curl -X POST https://api.rodz.io/v1/enrich/contact \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "first_name": "Jan",
    "last_name": "Dupont",
    "company": "acme.com"
  }'

Response

{
  "status": "success",
  "data": {
    "first_name": "Jan",
    "last_name": "Dupont",
    "full_name": "Jan Dupont",
    "email": "jan.dupont@acme.com",
    "email_status": "verified",
    "phone": "+32 470 123 456",
    "job_title": "VP of Sales",
    "seniority": "executive",
    "department": "sales",
    "linkedin_url": "https://www.linkedin.com/in/jandupont",
    "location": {
      "city": "Brussels",
      "country": "Belgium"
    },
    "company": {
      "name": "Acme Corp",
      "domain": "acme.com",
      "industry": "Software",
      "size": "51-200",
      "linkedin_url": "https://www.linkedin.com/company/acme-corp",
      "country": "Belgium"
    }
  },
  "credits_used": 1
}

The email_status field tells you whether the address has been verified (verified), is likely valid but unconfirmed (probable), or could not be validated (unknown). Always prioritize verified addresses in your outreach sequences to protect your sender reputation.

Use Case: Enriching a Sales Navigator Export

A typical workflow looks like this. Your SDR team exports 500 prospects from LinkedIn Sales Navigator. The export contains LinkedIn URLs, names and current companies, but no email addresses or phone numbers. You write a script that loops through the list and calls /enrich/contact for each record, passing the linkedin_url. Within minutes, you have verified email addresses for the majority of those contacts, plus phone numbers, job titles and company details, all synced back into your CRM without a single manual lookup.

You can also use this endpoint to keep your CRM clean. Schedule a weekly enrichment job that re-enriches contacts who changed jobs in the last 30 days. If someone moved from Company A to Company B, the API returns their updated title, company and email. Your reps never send outreach to a dead address again.

Endpoint 2: POST /enrich/find-email

What It Does

The /enrich/find-email endpoint does exactly what the name suggests: given a person’s first name, last name and company domain, it finds their professional email address and verifies it. Unlike the full contact enrichment endpoint, this one is laser-focused on email discovery. It returns fewer fields but consumes fewer credits, making it the cost-effective choice when email is the only data point you need.

The endpoint uses a combination of pattern matching, database lookups and real-time SMTP verification to return the most accurate address possible. It does not guess. If it cannot find a verified or highly probable address, it tells you so rather than returning junk data that would harm your deliverability.

Request Parameters

ParameterTypeRequiredDescription
first_namestringYesThe contact’s first name.
last_namestringYesThe contact’s last name.
companystringYesThe company domain (e.g., acme.com). Using the domain rather than the company name improves accuracy.

cURL Example

curl -X POST https://api.rodz.io/v1/enrich/find-email \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "first_name": "Sophie",
    "last_name": "Martin",
    "company": "techflow.io"
  }'

Response

{
  "status": "success",
  "data": {
    "email": "sophie.martin@techflow.io",
    "email_status": "verified",
    "confidence": 97,
    "first_name": "Sophie",
    "last_name": "Martin",
    "company": "techflow.io",
    "sources": 3
  },
  "credits_used": 0.5
}

The confidence score is a percentage between 0 and 100. Scores above 90 indicate a high-confidence match. The sources field tells you how many independent data sources confirmed the address. More sources mean higher reliability.

If the endpoint cannot find an email, the response looks like this:

{
  "status": "success",
  "data": {
    "email": null,
    "email_status": "not_found",
    "confidence": 0,
    "first_name": "Sophie",
    "last_name": "Martin",
    "company": "techflow.io",
    "sources": 0
  },
  "credits_used": 0
}

Note that no credits are consumed when the email is not found. You only pay for results.

Use Case: Building a Cold Email List from a Conference Attendee Roster

You attended a B2B SaaS conference and collected a spreadsheet of attendee names and companies. You need email addresses for a follow-up campaign but you do not have LinkedIn URLs and you do not want to pay for full contact enrichment since you only need email.

You run the spreadsheet through a script that calls /enrich/find-email for each row. The endpoint returns verified email addresses for roughly 70-85% of the attendees, depending on the industries and company sizes represented. You load those addresses into your sequencing tool and launch your follow-up within 48 hours of the event, while your conversation is still fresh in their minds.

Because find-email costs fewer credits than a full contact enrichment, this approach keeps your costs down when email is all you need. If you later decide you want phone numbers or job titles for the contacts who replied, you can upgrade those specific records with a targeted /enrich/contact call.

Endpoint 3: POST /enrich/reverse-email

What It Does

The /enrich/reverse-email endpoint works in the opposite direction. You provide an email address and it returns the person behind it: full name, current job title, company, LinkedIn URL and other professional details. This is invaluable when you have email addresses from inbound sources (form submissions, newsletter signups, support tickets, webinar registrations) but no context about who the person is or where they work.

Reverse email lookup turns anonymous email addresses into qualified leads. Instead of treating every form submission as an unknown, you can instantly enrich it and route high-value prospects to your sales team while sending lower-priority contacts into a nurture sequence.

Request Parameters

ParameterTypeRequiredDescription
emailstringYesThe email address to look up.
enrich_companybooleanNoSet to true to include full company data. Default: false.

cURL Example

curl -X POST https://api.rodz.io/v1/enrich/reverse-email \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "email": "marc.leroy@bigretail.fr",
    "enrich_company": true
  }'

Response

{
  "status": "success",
  "data": {
    "email": "marc.leroy@bigretail.fr",
    "first_name": "Marc",
    "last_name": "Leroy",
    "full_name": "Marc Leroy",
    "job_title": "Head of Digital",
    "seniority": "director",
    "department": "marketing",
    "linkedin_url": "https://www.linkedin.com/in/marcleroy",
    "location": {
      "city": "Paris",
      "country": "France"
    },
    "company": {
      "name": "Big Retail SAS",
      "domain": "bigretail.fr",
      "industry": "Retail",
      "size": "501-1000",
      "linkedin_url": "https://www.linkedin.com/company/big-retail",
      "country": "France"
    }
  },
  "credits_used": 1
}

When the email cannot be matched to a professional profile, the data object returns null values for the unknown fields. As with the find-email endpoint, no credits are consumed for empty results.

Use Case: Qualifying Inbound Leads Automatically

Imagine this scenario. A visitor downloads a whitepaper from your website and enters only their email address in the form. Within seconds, a webhook triggers a call to /enrich/reverse-email. The API returns their job title (Head of Digital), company (Big Retail SAS, 501-1000 employees) and LinkedIn URL. Your automation platform scores the lead based on seniority and company size, then routes it accordingly: high-value leads go straight to an SDR for immediate follow-up, while others enter a drip campaign.

This workflow eliminates the delay between form submission and first touchpoint. It also reduces form friction because you only need to ask for an email address. The API fills in the rest. Shorter forms mean higher conversion rates. Higher conversion rates mean more leads. More qualified leads, at that, because you now have the context to prioritize properly.

Another powerful application is cleaning and enriching your existing email database. If your marketing team has thousands of email addresses from years of events, newsletter signups and free trial registrations, many of those records lack job titles and company information. A batch reverse-email enrichment can fill in those gaps and help you segment your database by seniority, industry and company size.

Comparison: Rodz vs Lusha vs Kaspr vs Apollo

Choosing the right enrichment tool depends on your workflow, budget and data coverage needs. Here is how the Rodz API compares to three popular alternatives across the dimensions that matter most for B2B sales teams.

FeatureRodz APILushaKasprApollo
Delivery modelAPI-firstChrome extension + APIChrome extension + APIPlatform + API
Contact enrichmentYes (full profile)YesYesYes
Email finderYes (name + company)YesYesYes
Reverse email lookupYesNoNoLimited
Email verification built-inYes (real-time SMTP)BasicBasicBasic
Phone numbersYesYes (strong EU coverage)Yes (strong EU coverage)Yes (weaker EU coverage)
Company enrichmentYes (bundled with contact)Separate productLimitedYes
Webhook integrationYes (native)NoNoLimited
Credits on no resultNo chargeCredit consumedCredit consumedCredit consumed
European data coverageStrong (FR, BE, NL, DACH focus)Good (Israel + EU roots)Good (FR focus)Weaker in Europe
Rate limit100 requests/minVaries by planVaries by plan100 requests/min (paid)
GDPR complianceYes (EU-hosted)YesYesYes (US-hosted)
Pricing modelPay-per-enrichment (credits)Monthly subscription + seatsMonthly subscription + seatsFreemium + paid plans

A few things stand out. First, the Rodz API is one of the few platforms that offers a dedicated reverse-email endpoint. Most competitors require you to use their full contact enrichment flow even when you only have an email address to work with. Second, the no-charge policy on empty results means you never pay for data you did not get. Third, the European data coverage is particularly strong if your target market includes France, Belgium, the Netherlands or the DACH region.

That said, if your team relies heavily on a Chrome extension for LinkedIn prospecting, Lusha and Kaspr provide a more integrated browser experience. Apollo offers a large built-in lead database that can be useful for top-of-funnel discovery. The Rodz API is purpose-built for teams that want to integrate enrichment directly into their existing systems rather than adopt yet another platform.

Frequently Asked Questions

How many credits does each enrichment endpoint cost?

The /enrich/contact endpoint costs 1 credit per successful enrichment. The /enrich/find-email endpoint costs 0.5 credits. The /enrich/reverse-email endpoint costs 1 credit. In all cases, if the API cannot return a result, no credits are consumed. This no-result-no-charge policy means you can safely run large lists through the API without worrying about wasting credits on unresolvable records.

What is the rate limit for enrichment endpoints?

All Rodz API endpoints share the same rate limit of 100 requests per minute. If you exceed this limit, the API returns a 429 Too Many Requests response with a Retry-After header indicating how many seconds to wait. For batch enrichment jobs, we recommend processing records in parallel batches of 50-80 and respecting the rate limit with appropriate backoff logic. See the API Reference for details on error handling.

Can I use these endpoints to enrich contacts in bulk?

Yes. While the API processes one contact per request, you can parallelize calls up to the rate limit. For large-scale enrichment (thousands of records), build a queue-based system that feeds contacts to the API in controlled batches. Many teams use tools like Make, n8n or custom Python scripts with asyncio to process lists of 5,000 to 50,000 contacts in a single run. The key is to handle rate limiting gracefully and log results as you go so you can resume if a batch is interrupted.

What happens if the API cannot find an email or a contact?

The API returns a success response with null or empty values for the fields it could not resolve. The email_status field will be set to not_found for email lookups. No credits are deducted for empty results. This behavior is consistent across all three enrichment endpoints.

How accurate are the email addresses returned by the API?

The Rodz API uses multi-source verification that includes real-time SMTP checks, pattern analysis, and cross-referencing with proprietary databases. Verified emails (where email_status is verified) have a deliverability rate above 95%. Emails marked as probable typically have a deliverability rate between 80% and 95%. We recommend excluding addresses marked as unknown from cold outreach campaigns and using them only for LinkedIn-based sequences or advertising audiences.

Can I combine enrichment endpoints with signal endpoints?

Absolutely. This is one of the most powerful patterns in the Rodz API. For example, you can set up a webhook to receive signals about new VP-level hires at companies in your ICP. When the signal fires, you call /enrich/find-email with the person’s name and company domain to get their email address, then enroll them automatically in an outbound sequence. This signal-to-enrichment-to-sequence pipeline eliminates manual research entirely. Our guide on configuring intent signals walks you through the signal setup side of this workflow.

Is the data GDPR compliant?

Yes. The Rodz API is hosted in the European Union and processes data in accordance with GDPR requirements. All professional contact data is sourced from publicly available business information and opt-in databases. The API does not return personal (non-professional) email addresses or private phone numbers. You are responsible for ensuring that your use of the enriched data complies with applicable data protection regulations in your jurisdiction, including maintaining a legitimate interest basis for B2B outreach.

How does Rodz compare to using multiple enrichment tools together?

Some teams stack multiple enrichment providers to maximize coverage, a strategy often called “waterfall enrichment.” You try Provider A first, and if it returns no result, you fall back to Provider B, then Provider C. Tools like Clay make it easy to orchestrate these multi-provider cascades by letting you define fallback logic across dozens of data sources. While this approach can improve coverage, it adds complexity and cost. The Rodz API aims to deliver high coverage from a single source, particularly for European contacts. If your target market is primarily EU-based, starting with the Rodz API and adding a second provider only for the gaps is typically more cost-effective than running a full waterfall from day one. The no-charge policy on empty results makes this test-first approach risk-free.

Next Steps

You now have a clear understanding of all three contact enrichment endpoints in the Rodz API. Here is what to do next:

  1. Try it out. Open the interactive API documentation and test each endpoint with real data. The playground lets you experiment without writing any code.

  2. Read the full reference. The API Reference covers every endpoint, error code and pagination parameter in the Rodz platform.

  3. Build your first integration. If you have not yet set up authentication, start with our Getting Started guide and make your first call in under five minutes.

  4. Combine enrichment with intent signals. The real power of the Rodz API comes from chaining intent signals and enrichment together. When a business event happens, enrich the relevant contacts and act on them immediately. That is how you turn data into pipeline.

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