Developer Documentation

API Documentation

Everything you need to integrate DobePros into your application. One endpoint, structured JSON, decision-maker emails on the first try.

Authentication

All API requests require an API key passed in the X-Api-Key header. Keys are prefixed with le_ and are issued when you create an account.

Header Format

X-Api-Key: le_your_key_here

Example Request Header

-H "X-Api-Key: le_your_key_here"

Your API key is available on your Dashboard after signing up. Keep it secret — do not expose it in client-side code or public repositories.

Endpoint

POST /enrich

Send a JSON body with an array of website URLs. The API will crawl each site, extract contact information, rank emails by quality, validate phones, and return structured results.

Request Body
{ "urls": [ "example-medspa.com", "example-dental.com" ] }
Response
{ "count": 2, "with_email": 2, "with_phone": 1, "results": [ { "website": "https://example-medspa.com", "email": "sarah@example-medspa.com", "phone": "(305) 555-1234", "instagram": "https://instagram.com/examplemedspa", "facebook": "", "linkedin": "https://linkedin.com/company/example-medspa", "contact_page": "https://example-medspa.com/contact", "status": "ok" } ] }

Response Fields

Each object in the results array contains the following fields.

Field Type Description
website string Normalized URL with protocol prefix
email string Best-ranked email found on the site
phone string Validated phone number (US area code checked)
instagram string Instagram profile URL
facebook string Facebook page URL
linkedin string LinkedIn company URL
contact_page string Contact page URL found on the site
status string ok, no_response, empty_url, or error message

Email Ranking

When multiple emails are found on a site, DobePros ranks them using a 5-tier scoring system. The email with the lowest score (highest quality) is returned. This ensures you reach a decision-maker, not a generic inbox.

T1

Personal Names

john.smith@, sarah.jones@, mike.chen@

Score 10
T2

C-Suite / Decision-Makers

ceo@, founder@, owner@, director@

Score 20
T3

Department

sales@, marketing@, hello@, office@

Score 30
T4

Generic

info@, contact@, support@, admin@

Score 40
T5

No-Reply

noreply@, no-reply@, mailer-daemon@

Score 50

Rate Limits

Each request accepts a maximum of 100 URLs. For larger lists, batch your URLs into multiple requests. Your total quota depends on your plan.

Free
25
total URLs
Starter
500
total URLs
Agency
10,000
total URLs
Monthly
5,000
per month

When your quota is exceeded, the API returns a 403 error. Upgrade your plan on the Dashboard or purchase additional packs from the Pricing page.

Code Examples

Copy-paste examples to start enriching URLs in seconds.

curl -X POST https://dobepros.com/enrich \ -H "Content-Type: application/json" \ -H "X-Api-Key: le_your_key_here" \ -d '{ "urls": [ "example-medspa.com", "example-dental.com" ] }'
import requests response = requests.post( "https://dobepros.com/enrich", headers={ "Content-Type": "application/json", "X-Api-Key": "le_your_key_here", }, json={ "urls": [ "example-medspa.com", "example-dental.com", ] }, ) data = response.json() for result in data["results"]: print(result["website"], result["email"], result["phone"])
const response = await fetch("https://dobepros.com/enrich", { method: "POST", headers: { "Content-Type": "application/json", "X-Api-Key": "le_your_key_here", }, body: JSON.stringify({ urls: [ "example-medspa.com", "example-dental.com", ], }), }); const data = await response.json(); console.log(`Found ${data.with_email} emails out of ${data.count} URLs`); data.results.forEach(r => console.log(r.website, r.email));
<?php $ch = curl_init("https://dobepros.com/enrich"); curl_setopt_array($ch, [ CURLOPT_RETURNTRANSFER => true, CURLOPT_POST => true, CURLOPT_HTTPHEADER => [ "Content-Type: application/json", "X-Api-Key: le_your_key_here", ], CURLOPT_POSTFIELDS => json_encode([ "urls" => [ "example-medspa.com", "example-dental.com", ], ]), ]); $response = curl_exec($ch); curl_close($ch); $data = json_decode($response, true); foreach ($data["results"] as $result) { echo $result["website"] . " - " . $result["email"] . "\n"; }

Error Codes

The API returns standard HTTP status codes. Error responses include a JSON body with a detail field describing the issue.

Status Meaning Common Causes
400 Bad Request Empty URL list, or more than 100 URLs in a single request
403 Forbidden Invalid API key, key disabled by admin, or quota exceeded

Example Error Response

{ "detail": "Quota exceeded. Upgrade your plan at https://dobepros.com/enricher#pricing" }