ravn
Use case

See which companies visit. Not which people.

Pull visitor IPv4 addresses from your server logs, dedupe them, and run each through ip_to_company to get the organisation that owns the network. Home broadband, mobile carriers and cloud hosts return not_found, so expect matches only for companies that run their own network.

Start free: 1,000 lookups Read the docs

Playbook

Logs to a list of companies

  1. / 01

    Get the IPs server-side

    Take the client IP from your web server, CDN or backend logs. If you sit behind a proxy, use the forwarded client address, not the proxy's.

  2. / 02

    Filter and dedupe

    Keep IPv4 only; IPv6 is not supported. Drop your own office, known bots and health checks. Dedupe so each IP is looked up once.

  3. / 03

    Look up each IP

    Call ip_to_company. A match returns the organisation, network name, IP range and country.

  4. / 04

    Expect a lot of not_found

    People browsing from home, on a phone or through a VPN on a cloud host show up as their ISP, carrier or host. We return not_found for these rather than a misleading name, and a miss is free.

  5. / 05

    Turn names into accounts

    For organisations you care about, find their domain and run domain_to_company for size and industry (on your own People Data Labs key, ravn keys add pdl), or scrape_website for their public details, which is our own check and needs no key.

  6. / 06

    Act on the account, not the visitor

    You know a company looked, not who. Use it to prioritise accounts and research the right buyer through finding decision makers.

Run it

From log file to matches

# Pull unique IPv4 addresses from an nginx access log into a CSV
echo "ip" > ips.csv
awk '{print $1}' access.log | grep -E '^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+
| sort -u >> ips.csv # Look them all up npx ravn enrich ips.csv --tool ip_to_company --column ip --out ips-matched.csv # One IP over REST curl https://api.askravn.com/v1/tools/ip_to_company \ -H "Authorization: Bearer $RAVN_API_KEY" \ -H "Content-Type: application/json" \ -d '{"ip": "203.0.113.7"}' # In Claude Here are last week's unique visitor IPs. Run each through Ravn ip_to_company. Give me the organisations that matched, how many IPs each had, and their country. Ignore anything not_found.
What it costs

Lookups only, misses free

ip_to_company is one of our own checks: one lookup per IP, no provider key needed. Because not_found is free, you only spend lookups on IPs that match an organisation.

Worked example: a month of logs has 30,000 visits from 6,000 unique IPv4 addresses. Deduping first means you look up 6,000, not 30,000. On Ravn ($24 a month, 10,000 lookups included) that is well inside one month's allowance, and fewer lookups still if many come back not_found. The free plan's 1,000 lookups is enough to try it on a week of a small site.

If you then pull company records for 40 matched organisations with domain_to_company, that is 40 lookups on your own People Data Labs key, which bills you for the records. More on the tool is on the IP to company page.

Privacy. IP addresses can be personal data in some places. Make sure your privacy notice covers this use, and treat the result as company-level information only.

FAQ

Common questions.

All questions →

Can ip_to_company tell me which person visited?

No. It names the organisation that owns the network an IP belongs to. It never identifies a person, and Ravn does not match visitors to individuals.

Why do most of my visitors come back not_found?

Most browsing happens on home broadband, mobile networks or through cloud-hosted VPNs. Those IPs belong to the ISP, carrier or host, not the visitor's employer, so we return not_found instead of naming the ISP. You are not charged for them.

Does it support IPv6?

No, IPv4 only. Filter IPv6 addresses out of your logs before you run the lookup, or the request returns an invalid input error.

Is there a tracking script to install?

No. There is no tracking script to install. You send IPs you already have in your own server logs.

More in use cases

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