Pre-Black Friday: 20% off, for as long as you stayEARLYBFon Solo and AgencyEnds Nov 28Start free

How-to guide

How to Compare 4 B2B Databases on Japan Coverage (Accuracy Test)

Four vendors, one list of 25 Japan contacts, free tiers only. Real queries, real counts, and a score you can trust more than any vendor total.

Get your free API key →Free to start. No credit card. 1,000 records to spend whenever you like.

No B2B database proves Japan depth from its public pages, so you measure it. Run the same 25 Japan contacts through four free tiers and count what comes back. This guide does that for LeadOcean, Apollo, Lusha and ZoomInfo's GTM AI.

TL;DR

  • Build one list of 25 Japan contacts you know, then score each database on hit rate and email status. It takes about 45 minutes.
  • LeadOcean sizes Japan for free with count=true, and the 25 lookups spend at most 25 of your 1,000 free records. A miss is a free 404.
  • Apollo sizes Japan for 0 credits. Lusha and GTM AI need only their free tiers to test the same list.

Prerequisites

  • A free LeadOcean key from app.leadocean.io, exported as $LEADOCEAN_API_KEY. No card.
  • Free accounts at Apollo ($APOLLO_API_KEY), Lusha and GTM AI (ZoomInfo's pay-as-you-go product).
  • 25 people you really sell to in Tokyo, Osaka, Nagoya or Fukuoka, each with a LinkedIn URL. Use your own list, not ours.
  • curl, jq and a spreadsheet.

Step 1: Build the test list

Save the 25 contacts as a CSV with one LinkedIn URL per row. The sample below uses placeholders.

csv
name,linkedin_url,city
Jane Doe,https://www.linkedin.com/in/jane-doe-example,Tokyo
John Roe,https://www.linkedin.com/in/john-roe-example,Osaka

Mix seniority and company size. Include a few people at small firms, because that is where every database thins out. Add three columns to fill in later: found, email_ok and phone_ok.

Step 2: Size Japan on LeadOcean

A free count tells you how big Japan is before you spend a record. Send count=true as a query parameter with limit=1.

bash
curl -s -X POST "https://api.leadocean.io/v1/people/search?count=true&limit=1" \
  -H "x-api-key: $LEADOCEAN_API_KEY" \
  -H "content-type: application/json" \
  -d '{"country": ["JP"], "jobLevel": ["C-Team"]}' | jq '.meta | {total, totalIsExact, distinctCompanies}'

The same count works from any MCP client. Connect https://api.leadocean.io/mcp, then ask:

text
Use leadocean_count_leads with country JP and jobLevel C-Team. Report the total and distinctCompanies.

Step 3: Run the 25 contacts through LeadOcean

Enrich each LinkedIn URL and log the HTTP code. A 200 is a hit. A 404 means nobody matched and costs nothing. Send reveal_email to get the email and phone points.

bash
tail -n +2 japan25.csv | while IFS=, read -r name url city; do
  code=$(curl -s -o "out_$RANDOM.json" -w "%{http_code}" -X POST \
    "https://api.leadocean.io/v1/people/enrich" \
    -H "x-api-key: $LEADOCEAN_API_KEY" -H "content-type: application/json" \
    -d "{\"linkedin_url\": \"$url\", \"reveal_email\": true}")
  echo "$name,$code"
  sleep 0.3
done

The sleep keeps you under 5 requests a second on Free. Open the JSON files and note the email status and whether a phone is present. Judge on email_status, not on the presence of an address.

Step 4: Size and test Apollo

Apollo's people search costs 0 credits and returns total_entries. Filter with person_locations[], which takes countries and cities (Apollo API docs, September 2026). Pass the key in the x-api-key header (Apollo, September 2026).

bash
curl -s -X POST "https://api.apollo.io/api/v1/mixed_people/api_search?person_locations[]=japan&per_page=1" \
  -H "x-api-key: $APOLLO_API_KEY" -H "Content-Type: application/json" | jq '.total_entries'

A free Apollo account must be registered with a work email to use this endpoint. Search shows at most 50,000 records, 100 a page, and returns no emails or phones. Enrichment is what spends credits: an email costs 1 and a phone 8 (Apollo API pricing, September 2026). Apollo Free gives 75 credits a month (Apollo pricing, September 2026). Enrich your 25 and log hits.

Step 5: Test Lusha and GTM AI on the same list

Neither needs code for a 25-row test. Use their free tiers and the same CSV.

text
Lusha Free: 40 credits a month, no card.
  1 credit per email, 5 per phone.
  25 emails = 25 credits, leaving 15 credits = 3 phones.
GTM AI Free: 1,000 data credits, no card.
  Search and lookup are free. One data credit enriches one contact.
  A record is charged once per 12 months.

Both are cited from their own pages: Lusha pricing and API guide, September 2026, GTM AI pricing, September 2026 and GTM AI credit docs, September 2026. On GTM AI, run your Japan filters first because search is free, then spend credits only on your 25.

Step 6: Score the four

Count each column and divide by 25. Do not compare vendor totals. Each vendor defines a contact its own way.

python
import csv
rows = list(csv.DictReader(open("scores.csv")))
for db in ["leadocean", "apollo", "lusha", "gtm_ai"]:
    found = sum(r[f"{db}_found"] == "y" for r in rows)
    email = sum(r[f"{db}_email_ok"] == "y" for r in rows)
    print(db, f"found {found}/25", f"usable email {email}/25")

An email counts as usable only if the vendor marks it verified or catch-all valid. Pay for the one with the best usable-email rate on your list, not the biggest total.

What you get

This is the free LeadOcean count run on 2026-10-21 with leadocean_count_leads. It spent 0 records.

text
country JP, mailable (verified, catch_all_valid or catch_all): 330,993 people (exact), 39,621 distinct companies
country JP, all email statuses: 1,757,258 people
country JP, with a phone, any email status: 146,796 people
country JP, jobLevel C-Team, mailable: 33,225 people (of 140,820 across all email statuses)

Japan is about 19% mailable by that count (330,993 of 1,757,258). A phone is on about 8% (146,796 of 1,757,258). That is the honest shape of the data, and your 25-contact score will show whether it holds for your titles.

An enrich hit has this shape, response shape from the API reference, with placeholder values:

json
{
  "success": true,
  "data": {
    "profile_data": { "...": "Jane Doe, Acme" },
    "contact_data": { "...": "present when reveal_email is true" },
    "resume_data": { "...": "past roles, education, certifications" },
    "meta": { "...": "source and fetch date" }
  }
}

Troubleshooting

ErrorCauseFix
401Missing or wrong x-api-key headerRe-export $LEADOCEAN_API_KEY and check the header name
429Above the plan's rate limit (5 a second on Free, 200 on Agency)Honour Retry-After and keep the 0.3 second sleep
402The 1,000 free records are spentMove to a paid plan on the pricing page
Empty resultsA bad enum value, such as Japan for country or CEO for jobLevelUse JP and exact values from leadocean_list_enum_values
404 on enrichNobody matched that LinkedIn URLCount it as a miss. It costs nothing
Search stops earlyOne search pages to 10,000 rows (meta.depthCapped)Narrow the filters by city or level

FAQ

How many contacts do I need for the test?

Twenty-five is enough to rank four vendors, not to publish a rate. For a tighter read, run 100 and spend them across two months of free tiers.

Why not compare the vendor totals?

Each vendor counts a contact its own way, and most print a worldwide total with no Japan row. A hit rate on your own list is the only number that transfers to your buying.

Does LeadOcean cover Japanese-script names?

We make no claim on that. Put a few Japanese-script rows in your 25 and read what each database returns.

Can I run this from an AI agent?

Yes. The LeadOcean MCP server at https://api.leadocean.io/mcp has 13 tools, and leadocean_count_leads sizes Japan for free. Apollo and GTM AI also run MCP servers.

What does Japan cost at volume?

See what enrichment actually costs and the Japan provider ranking. LeadOcean paid plans start at Solo $97 a month.

Size your Japan audience free, then test your 25 contacts

Free to start. No credit card. 1,000 records to spend whenever you like.

Get your free API key →