Play Video

Oppora's Claude MCP is Live. Connect our Email Database & Outreach features with any tool to build smart automations inside Claude. Start for Free

Oppora API documentation

The Oppora API gives your code and AI agents the B2B data behind the app: find and verify work emails, find phone numbers, enrich people from a LinkedIn URL, and search companies and people. Call the REST API from any HTTP client, or connect the MCP server to Claude, ChatGPT, Cursor or VS Code. One API key works for both, on every plan.

Last updated:

Quickstart: find an email in three steps

  1. 1

    Create an API key

    In the app, open Integrations > Oppora API and click New key. Copy the opp_live_ secret; it is shown once. Send it as Authorization: Bearer opp_live_YOUR_KEY on every request.

  2. 2

    Call email search

    Base URL: https://api.oppora.ai/api/v1/public. A lookup can take up to about 90 seconds while the waterfall runs, so give your client a 120-second timeout. For lists, use the bulk endpoint instead.

    curl -X POST https://api.oppora.ai/api/v1/public/email/search \
      -H "Authorization: Bearer opp_live_YOUR_KEY" \
      -H "Content-Type: application/json" \
      -d '{"first_name": "Alice", "last_name": "Chen", "domain": "stripe.com"}'
  3. 3

    Read the result

    You get the address, its status and what the call cost. Credits are charged only when the status is valid or risky; misses are free. Check your balance any time with GET /credits.

    Response
    {
      "email": "[email protected]",
      "status": "valid",
      "credit_charged": 1,
      "credits_remaining": 9841
    }

Endpoints and credits

All paths are relative to https://api.oppora.ai/api/v1/public. Responses are plain JSON. Searches that find nothing are free. Full schemas are in the REST API reference.

EndpointWhat it doesCredits
Account
GET/meYour key, user, workspace and rate limitsFree
GET/creditsRemaining data and phone creditsFree
GET/usageRequests and errors per day across all your keysFree
Discover and enrich
POST/discover/companiesSearch companies by industry, size, location, revenue, funding and growth5 data credits per call with results
POST/discover/peopleSearch people by title, seniority, department, company and location10 data credits per call with results
POST/enrich/peoplePerson, company and job details from a LinkedIn profile URL, with an optional email5 data credits per match, plus 1 if an email is found
GET/filters/industries, /countries, /departments, /management-levelsExact values the discover filters acceptFree
Email and phone
POST/email/searchFind a work email from a name and company domain1 data credit when valid or risky
POST/email/verifyCheck deliverability, standard or advanced (catch-all aware)1 data credit, 2 for advanced
POST/phone/searchFind a phone number from a LinkedIn URL or name plus company1 phone credit when found
Bulk jobsUp to 5,000 rows per job and 5 jobs running at once. Poll /jobs/{id} for progress and results.
POST/email/search/bulkEmail lookups for a batch of people1 data credit per email found
POST/email/verify/bulkVerification for a batch of addresses1 data credit per result, either mode
POST/phone/search/bulkPhone lookups for a batch of people1 phone credit per number found
GET/jobs, /jobs/{id}List jobs, read status and resultsFree
POST/jobs/{id}/cancelCancel a jobFree
Lists
GET, POST/listsList or create listsFree
GET, PATCH, DELETE/lists/{id}Read, update or delete a listFree
GET/lists/{id}/analyticsEmail coverage and verification quality for a listFree
GET/lists/{id}/leads, /lists/{id}/companiesRead a list's leads or companies, with filtersFree
POST/lists/{id}/leads/import, /lists/{id}/companies/importImport up to 5,000 rows as a background jobFree
GET, POST/foldersList or create foldersFree

What email statuses mean

valid
The recipient's mail server confirmed the mailbox exists. Safe to send.
risky
The domain accepts mail for any address (catch-all) or would not confirm this one. Oppora's own waterfall returns a risky address only after a deeper check passes, but it bounces more often than a valid one. Send to these in smaller batches.
invalid
The mailbox does not exist or the domain cannot receive mail. Do not send. Email search never charges for it.

The verifier can also return catch-all (the domain accepts every address) or unknown (the server gave no clear answer). Run /email/verify with "mode": "advanced" for a catch-all aware check.

Rate limits

Limits apply per key and cover MCP calls too. You can set a lower limit on a key, never a higher one. GET /me returns the limits for the key you call it with.

PlanPer minutePer day
Free301,000
Pro30050,000
Max1,500250,000