Programmatic access to Outsoci's email scraping capabilities. Use our REST API to integrate lead generation into your workflow.
Rate limits are applied per API key and reset every minute. Limits vary by subscription plan.
| Plan | Requests / minute |
|---|---|
| TRIAL | 30 requests/minute |
| FREE | 30 requests/minute |
| STARTER_MONTHLY | 100 requests/minute |
| STARTER_YEARLY | 100 requests/minute |
| PRO_MONTHLY | 500 requests/minute |
| PRO_YEARLY | 500 requests/minute |
| BUSINESS_MONTHLY | 2000 requests/minute |
| BUSINESS_YEARLY | 2000 requests/minute |
| ENTERPRISE | 10000 requests/minute |
All API requests require an API key. Include your key in the Authorization header using the Bearer scheme:
You can generate API keys in your Dashboard →
Errors are returned with appropriate HTTP status codes and a JSON body containing an error field.
{ "error": "Invalid API key" }{
"error": "Rate limit exceeded",
"message": "Too many requests. Try again in X minutes."
}{
"error": "Insufficient credits",
"required": 150,
"available": 75
}{ "error": "Internal server error" }We maintain a machine-readable OpenAPI 3.0 specification for the Outsoci API. You can use it with API clients, documentation generators, or testing tools.
Download openapi.jsonConfigure a webhook URL to receive real-time notifications when your scraping jobs complete. Set your webhook via the /api/v1/webhooks endpoint.
You can choose between two formats:
{
"event": "scrape.completed",
"scrape_id": 12345,
"user_id": "usr_abc123",
"platform": "instagram",
"keyword": "fitness coaches",
"results_count": 94,
"requested_results": 100,
"completed_at": "2026-03-06T20:32:15.000Z",
"download_url": "https://outsoci.com/api/download-scrape-results",
"formats": ["csv", "xls"]
}{
"event": "scrape.result",
"scrape_id": 12345,
"user_id": "usr_abc123",
"platform": "instagram",
"keyword": "fitness coaches",
"completed_at": "2026-03-06T20:32:15.000Z",
"result": {
"title": "John Doe - Fitness Coach",
"email": "john@example.com",
"link": "https://instagram.com/johndoe",
"platform": "instagram",
"keyword": "fitness coaches"
}
}You can test your webhook by using a service like webhook.site or RequestBin. Set the webhook URL to your test endpoint, trigger a scrape, and inspect the incoming payloads.
/api/v1/accountRetrieve your account information including credits and subscription plan.
None
curl -H "Authorization: Bearer YOUR_API_KEY" https://outsoci.com/api/v1/account
{
"success": true,
"account": {
"email": "user@example.com",
"credits": 5432,
"plan": "PRO_MONTHLY",
"firstName": "John",
"lastName": "Doe"
}
}/api/v1/scrapeStart a new scraping job. The job is processed asynchronously via RabbitMQ.
keyword (string), platform (string), results (number)
country, location, validateEmails (boolean), includeSynonyms (boolean), avoidDuplicates (boolean), tbs (string)
curl -X POST \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"keyword": "fitness coaches",
"platform": "instagram",
"results": 100,
"validateEmails": true,
"location": "United States"
}' https://outsoci.com/api/v1/scrape{
"success": true,
"message": "Scrape request created",
"scrapeId": 12345,
"credits": 9876,
"estimatedMaxCost": 150
}/api/v1/scrape/:idGet the status and results count of a scraping job.
None
curl -H "Authorization: Bearer YOUR_API_KEY" https://outsoci.com/api/v1/scrape/12345
{
"success": true,
"scrape": {
"id": 12345,
"keyword": "fitness coaches",
"platform": "instagram",
"status": "DONE",
"resultsCount": 94,
"progress": 100,
"requestedAt": "2026-03-06T20:30:00.000Z",
"updatedAt": "2026-03-06T20:32:15.000Z",
"downloadUrl": "https://outsoci.com/api/download-scrape-results"
}
}/api/download-scrape-resultsDownload the results of a completed scrape in CSV or Excel format. Requires id_scraping and format parameters.
id_scraping (number), format (string: "csv" or "xls")
curl -X POST \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"id_scraping": 12345,
"format": "csv"
}' https://outsoci.com/api/download-scrape-resultsFile attachment (binary) with Content-Disposition header.
/api/v1/keywordsGenerate targeted keywords for scraping using AI (Gemini).
description (string)
platform (string) - one of: instagram, facebook, linkedin, twitter, youtube, tiktok, maps.google.com, multi
curl -X POST \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"description": "B2B SaaS founders in Europe with 10-50 employees",
"platform": "linkedin"
}' https://outsoci.com/api/v1/keywords{
"success": true,
"keywords": "CEO, founder, managing director, CTO, startup founder, entrepreneur, business owner, SaaS founder"
}/api/v1/webhooksRetrieve your current webhook configuration (URL and format).
None
curl -H "Authorization: Bearer YOUR_API_KEY" https://outsoci.com/api/v1/webhooks
{
"success": true,
"webhook": {
"url": "https://your-server.com/webhooks/outsoci",
"format": "batch"
}
}/api/v1/webhooksConfigure your webhook URL and format. If you don't provide a format, it defaults to "batch".
url (HTTPS URL)
format (string: "batch" or "per_result")
curl -X POST \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"url": "https://your-server.com/webhooks/outsoci",
"format": "batch"
}' https://outsoci.com/api/v1/webhooks{
"success": true,
"webhook": {
"url": "https://your-server.com/webhooks/outsoci",
"format": "batch"
}
}/api/v1/webhooksClear your webhook configuration (both URL and format).
None
curl -X DELETE -H "Authorization: Bearer YOUR_API_KEY" https://outsoci.com/api/v1/webhooks
{
"success": true,
"message": "Webhook configuration cleared"
}