Bulk Company Enrichment Job Status
Check the status and progress of a bulk company enrichment job. Returns the current status, per-outcome counts, and row totals.
curl --request GET \
--url https://api.orbisearch.com/v1/company-enrichment/bulk/{job_id} \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.orbisearch.com/v1/company-enrichment/bulk/{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/company-enrichment/bulk/{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/company-enrichment/bulk/{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/company-enrichment/bulk/{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/company-enrichment/bulk/{job_id}")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.orbisearch.com/v1/company-enrichment/bulk/{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,
"credits_consumed": 490,
"summary": {
"total_found": 198,
"total_not_found": 29,
"total_error": 10,
"total_invalid_url": 5
},
"created_at": "2026-09-25T14:30:00Z"
}{
"detail": "API key required in X-API-Key header"
}{
"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 API key. Contact us to discuss higher limits.",
"code": "rate_limited"
}Job status values
| Status | Meaning |
|---|---|
running | Job is still processing rows. Continue polling. |
completed | Every row has been answered. Results are ready to retrieve. |
Outcome summary
Thesummary object on the response gives a per-outcome breakdown that updates as the job progresses. Counts are in submitted rows, so duplicates are counted each time they appear:
| Field | Meaning |
|---|---|
total_found | Rows where a company record was returned. |
total_not_found | Rows with a valid company URL that matches no company. |
total_error | Rows OrbiSearch couldn’t answer. |
total_invalid_url | Rows skipped at submission because they weren’t a usable company URL. These cost nothing. |
credits_consumed is the amount charged when the job was submitted. It doesn’t change as the job runs.
Polling cadence
For most jobs, polling every 10–30 seconds is sufficient. Even a small job can take up to a minute to complete. Polling more frequently than necessary won’t speed up processing and counts against your rate limit (20 requests per second per API key, shared across the /v1/* API).Authorizations
API key for authentication
Path Parameters
Response
Successful Response
Status snapshot of a bulk company-enrichment job.
Unique job identifier.
Job status: running (still processing) or completed (all rows done).
running, completed "running"
Total input rows submitted (repeats included; unique companies are what was charged).
500
Input rows answered so far.
237
Credits deducted for this job: 1 credit per distinct input, charged once at submit and never refunded after acceptance. Failed rows stay charged; invalid rows were never charged.
490
Per-outcome counts.
Show child attributes
Show child attributes
Job submission timestamp (UTC).
Timestamp of the last processed row (UTC). Null while running.
curl --request GET \
--url https://api.orbisearch.com/v1/company-enrichment/bulk/{job_id} \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.orbisearch.com/v1/company-enrichment/bulk/{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/company-enrichment/bulk/{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/company-enrichment/bulk/{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/company-enrichment/bulk/{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/company-enrichment/bulk/{job_id}")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.orbisearch.com/v1/company-enrichment/bulk/{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,
"credits_consumed": 490,
"summary": {
"total_found": 198,
"total_not_found": 29,
"total_error": 10,
"total_invalid_url": 5
},
"created_at": "2026-09-25T14:30:00Z"
}{
"detail": "API key required in X-API-Key header"
}{
"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 API key. Contact us to discuss higher limits.",
"code": "rate_limited"
}