Email finder (unlimited)
Bulk Email Finder Job Status (Unlimited Plans)
Check the status and progress of an unlimited-plan bulk email finder job.
GET
/
v1
/
unlimited
/
bulk-lookup
/
{job_id}
Bulk Email Finder Job Status (Unlimited Plans)
curl --request GET \
--url https://api.orbisearch.com/v1/unlimited/bulk-lookup/{job_id} \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.orbisearch.com/v1/unlimited/bulk-lookup/{job_id}"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://api.orbisearch.com/v1/unlimited/bulk-lookup/{job_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.orbisearch.com/v1/unlimited/bulk-lookup/{job_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.orbisearch.com/v1/unlimited/bulk-lookup/{job_id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.orbisearch.com/v1/unlimited/bulk-lookup/{job_id}")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.orbisearch.com/v1/unlimited/bulk-lookup/{job_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"job_id": "123e4567-e89b-12d3-a456-426614174000",
"status": "running",
"total_rows": 500,
"total_processed": 237,
"summary": {
"total_found": 198,
"total_not_found": 39
},
"created_at": "2026-04-21T14:30:00Z"
}{
"detail": "API key required in X-API-Key header"
}{
"detail": "No active subscription. This key resumes working when the subscription is reinstated.",
"code": "subscription_inactive"
}{
"detail": "This endpoint requires an unlimited API key. Pay-as-you-go keys use the credit-metered /v1 endpoints.",
"code": "wrong_key_plan"
}{
"detail": "Job not found"
}{
"detail": "Missing required query parameter: email.",
"errors": [
{
"loc": "query.email",
"msg": "Missing required query parameter: email.",
"type": "missing"
}
]
}{
"detail": "Rate limit exceeded. Maximum 20 requests per second per account. Contact us to discuss higher limits.",
"code": "rate_limited"
}Status endpoint for jobs submitted via POST /v1/unlimited/bulk-lookup. The response contract (status values,
summary counts, row totals) is identical to GET /v1/bulk-lookup/{job_id}; see that page for field meanings and polling guidance.
Requires the Unlimited API key that created the job. Polling this endpoint consumes no quota (neither the monthly cap nor the daily search limit); it counts only against the shared per-account request-rate window, so poll every 10 to 30 seconds rather than in a tight loop.Authorizations
API key for authentication
Path Parameters
Response
Successful Response
Status snapshot of a bulk email finder job.
Unique job identifier.
Example:
"123e4567-e89b-12d3-a456-426614174000"
Job status: running (still processing) or completed (all rows done).
Available options:
running, completed Example:
"running"
Total rows submitted.
Example:
500
Rows processed so far.
Example:
237
Per-outcome counts.
Show child attributes
Show child attributes
Job submission timestamp (UTC).
Example:
"2026-04-21T14:30:00Z"
Timestamp of the last processed row (UTC). Null while running.
Example:
null
⌘I
Bulk Email Finder Job Status (Unlimited Plans)
curl --request GET \
--url https://api.orbisearch.com/v1/unlimited/bulk-lookup/{job_id} \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.orbisearch.com/v1/unlimited/bulk-lookup/{job_id}"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://api.orbisearch.com/v1/unlimited/bulk-lookup/{job_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.orbisearch.com/v1/unlimited/bulk-lookup/{job_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.orbisearch.com/v1/unlimited/bulk-lookup/{job_id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.orbisearch.com/v1/unlimited/bulk-lookup/{job_id}")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.orbisearch.com/v1/unlimited/bulk-lookup/{job_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"job_id": "123e4567-e89b-12d3-a456-426614174000",
"status": "running",
"total_rows": 500,
"total_processed": 237,
"summary": {
"total_found": 198,
"total_not_found": 39
},
"created_at": "2026-04-21T14:30:00Z"
}{
"detail": "API key required in X-API-Key header"
}{
"detail": "No active subscription. This key resumes working when the subscription is reinstated.",
"code": "subscription_inactive"
}{
"detail": "This endpoint requires an unlimited API key. Pay-as-you-go keys use the credit-metered /v1 endpoints.",
"code": "wrong_key_plan"
}{
"detail": "Job not found"
}{
"detail": "Missing required query parameter: email.",
"errors": [
{
"loc": "query.email",
"msg": "Missing required query parameter: email.",
"type": "missing"
}
]
}{
"detail": "Rate limit exceeded. Maximum 20 requests per second per account. Contact us to discuss higher limits.",
"code": "rate_limited"
}