ravn
Use case

Know who signed up before you reply.

On each new sign-up, call validate_email, and if the address is on a company domain, call domain_to_company to add name, size, industry and location to the record. Free-mail and disposable addresses stop at the first step.

Start free: 1,000 lookups Read the docs

Playbook

One webhook, two calls

Use your sign-up form's webhook, your backend, or the HTTP step in a tool such as Zapier, Make or n8n. There are no native app listings; the HTTP step works with any of them.

  1. / 01

    Create an API key

    Sign in at askravn.com and make a key. Store it as RAVN_API_KEY in your secrets, never in the form or browser code.

  2. / 02

    Check the email

    Call validate_email with the sign-up address. If the status is invalid or disposable is true, tag the lead and stop. That saves your team time and a lookup.

  3. / 03

    Skip free mail

    If free_provider is true (a personal mailbox), there is no company domain to look up. Mark it as a personal sign-up and stop.

  4. / 04

    Look up the company

    For a company address, call domain_to_company with the domain from the validate_email answer. It runs on your own People Data Labs key (connect it with ravn keys add pdl), and returns name, employee count, industry, founded year, city, state, country, LinkedIn URL and NAICS codes. Ravn stores none of it.

  5. / 05

    Write it back and route

    Save the fields to your CRM or database, then route by size or industry. A not_found from domain_to_company costs nothing; leave those for a human to check.

  6. / 06

    Handle limits

    On HTTP 429, wait for the Retry-After header and retry. On 403 provider_key_required, connect your provider key with ravn keys add pdl. Do not drop the sign-up on an error; queue it.

Run it

The two requests

# 1. Check the address (1 lookup)
curl https://api.askravn.com/v1/tools/validate_email \
  -H "Authorization: Bearer $RAVN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"email": "jane@acme.com"}'

# Branch on results.status, results.disposable and results.free_provider.

# 2. Company details for the domain (one lookup on your own PDL key, free if not_found)
curl https://api.askravn.com/v1/tools/domain_to_company \
  -H "Authorization: Bearer $RAVN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"domain": "acme.com"}'

# Backfill last month's sign-ups from a CSV instead
npx ravn enrich signups.csv --tool domain_to_company --map domain=Website --out signups-enriched.csv
What it costs

One lookup per sign-up, one per company

The email check uses one lookup from your plan and needs no provider key. The company lookup is also one lookup when it finds a match and nothing when it does not, and it runs on your own People Data Labs key, which bills you directly for the record.

Worked example: 600 sign-ups in a month, of which 400 use a company domain. The email checks take 600 lookups, well inside the 10,000 lookups a month the plan includes. The company lookups take another 400, and if 50 domains return not_found, those 50 lookups are given straight back.

Skipping free-mail and disposable addresses before step 4 is what keeps the bill down. The company enrichment API lists every field, and the error docs list every status code.

FAQ

Common questions.

All questions →

Is there a native HubSpot or Salesforce app?

No. Use your CRM's workflow webhook, or an HTTP step in Zapier, Make or n8n, to call the REST API. The request is the same two calls shown above. The integrations page has examples.

Can I enrich the person, not just the company?

Yes. reverse_email_lookup takes an email and returns a person record if one exists, for one lookup per person matched, on your own People Data Labs key. Use it only where your privacy notice covers it.

What happens if Ravn is slow or down during a sign-up?

Do not block the sign-up on it. Queue the enrichment and retry. A 503 upstream_unavailable or a 429 with Retry-After is safe to retry later. We do not offer an SLA, so build the retry in.

Should I enrich sign-ups that use Gmail or other free mail?

There is no company to look up from a free-mail domain, so domain_to_company would only return not_found. Check the free_provider flag from validate_email and stop there. If the person gives a company website elsewhere on the form, look up that domain instead.

More in use cases

Every page uses the same account, plan and tools. See pricing →