Overview The Email Scraper API allows you to programmatically submit email scraping jobs, monitor their progress, and retrieve results. Our system leverages AI-powered discovery to find verified B2B contacts based on your specific niche and industry requirements.
Base Endpoint https://efficientpim.com/api/ess
Authorization Note: All API requests require a unique API key generated from your user dashboard.
Pricing and Credits Our service operates on a transparent credit system. Credits are consumed based on the volume of leads discovered.
Action Credit Cost Details Standard Scraping 1 Credit per Lead Standard discovery rate. Minimum 1,000 leads per job. Deduplication Fee +0.2 Credits per Lead Applies when skip_dupes is enabled. Filters against all historical jobs.
Authentication Requests must be authenticated using your Private API Key via one of the following methods:
Method 1: JSON Request Body (Preferred for POST) { "api_key": "your_private_api_key", "niche": "niche description" }
Method 2: Query Parameter (Preferred for GET) GET /api/ess/balance?api_key=your_private_api_key
Submit Scraping Job
POST
/submit
Initializes a new scraping request for lead discovery.
Parameters Parameter Type Status Description api_keystring Required Your Private API key nichestring Required Industry description (e.g. "Roofing contractors in Texas") target_countinteger Required Lead volume requested (1,000 to 10,000) skip_dupesboolean Optional Set to true to skip previous leads (+20% fee)
Example cURL Request curl -X POST "https://efficientpim.com/api/ess/submit" \
-H "Content-Type: application/json" \
-d '{
"api_key": "your_private_api_key",
"niche": "Data analysts in London",
"target_count": 1000,
"skip_dupes": true
}'
Request Chaining and Cooldowns To ensure system stability, we enforce a mandatory submission interval between jobs.
Submission Rule: You must wait a minimum of 10 seconds before submitting a new job.
When automating multiple niches, your implementation should handle 429 Too Many Requests errors by pausing execution before retrying.
Check Job Status
GET
/status/{job_id}
Poll this endpoint to track discovery progress. Typical values include pending, processing, completed, or failed.
GET https://efficientpim.com/api/ess/status/8542?api_key=your_key
Retrieve Job Results
GET
/results/{job_id}
Retrieve the verified leads list. Supports json (default) or csv formats.
GET https://efficientpim.com/api/ess/results/8542?api_key=your_key&format=csv
Code Examples Continuous Automation (Node.js) const axios = require('axios');async function automateScraping() {
const targets = ['marketing firms', 'lawyers', 'real estate agents'];
for (const niche of targets) {
try {
const res = await axios.post('https://efficientpim.com/api/ess/submit', {
api_key: 'YOUR_KEY',
niche: niche,
target_count: 500
});
console.log(`Submitted Job ID: ${res.data.job_id}`);
await new Promise(resolve => setTimeout(resolve, 15000)); // Delay for cooldown
} catch (err) {
if (err.response?.status === 429) {
console.log('Cooldown active, waiting 30 seconds...');
await new Promise(resolve => setTimeout(resolve, 30000));
}
}
}
}
Bulk Processing (PHP) <?php
$api_key = 'YOUR_KEY';
$niches = ['marketing firms', 'dentists'];foreach ($niches as $niche) {
$curl = curl_init('https://efficientpim.com/api/ess/submit');
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode([
'api_key' => $api_key,
'niche' => $niche,
'target_count' => 100
]));
$response = curl_exec($curl);
$status = curl_getinfo($curl, CURLINFO_HTTP_CODE);
curl_close($curl);
if ($status == 200) {
echo "Job started for $niche. Pausing 15 seconds.\n";
sleep(15);
} elseif ($status == 429) {
echo "Rate limit hit. Pausing 30 seconds.\n";
sleep(30);
}
}
?>
Simple Integration (Python) import requests
import timeendpoint = "https://efficientpim.com/api/ess/submit"
payload = {
"api_key": "YOUR_KEY",
"niche": "interior designers",
"target_count": 500
}response = requests.post(endpoint, json=payload)
if response.status_code == 200:
print(f"Discovery Initiated: {response.json().get('job_id')}")
time.sleep(15)
Technical Support: If you encounter issues, please contact us via Telegram or email.