Bulk Export
Crawl Status
Get feed crawl cycle status (current, last completed, schedule).
GET
/
twitter
/
v1
/
bulk-export
/
crawl-status
Crawl Status
curl --request GET \
--url https://api.openbits.ai/twitter/v1/bulk-export/crawl-status \
--header 'x-api-key: <api-key>'import requests
url = "https://api.openbits.ai/twitter/v1/bulk-export/crawl-status"
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.openbits.ai/twitter/v1/bulk-export/crawl-status', 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.openbits.ai/twitter/v1/bulk-export/crawl-status",
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.openbits.ai/twitter/v1/bulk-export/crawl-status"
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.openbits.ai/twitter/v1/bulk-export/crawl-status")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.openbits.ai/twitter/v1/bulk-export/crawl-status")
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{
"success": true,
"data": {
"currentCycle": {
"id": "clxyz123abc",
"status": "running",
"startedAt": "2026-04-04T06:00:12.000Z",
"accountsTargeted": 99000,
"accountsCompleted": 45000,
"accountsFailed": 200,
"tweetsIngested": 152000,
"percentComplete": 45.7
},
"lastCompletedCycle": {
"id": "clxyz789def",
"startedAt": "2026-04-04T00:00:08.000Z",
"completedAt": "2026-04-04T00:42:31.000Z",
"durationMinutes": 42,
"accountsTargeted": 99000,
"accountsCompleted": 98800,
"accountsFailed": 200,
"tweetsIngested": 250000,
"tweetsUpdated": 50000
},
"schedule": {
"intervalHours": 6,
"nextExpectedAt": "2026-04-04T12:00:00.000Z"
}
}
}
{
"success": true,
"data": {
"currentCycle": null,
"lastCompletedCycle": {
"id": "clxyz789def",
"startedAt": "2026-04-04T00:00:08.000Z",
"completedAt": "2026-04-04T00:42:31.000Z",
"durationMinutes": 42,
"accountsTargeted": 99000,
"accountsCompleted": 98800,
"accountsFailed": 200,
"tweetsIngested": 250000,
"tweetsUpdated": 50000
},
"schedule": {
"intervalHours": 6,
"nextExpectedAt": "2026-04-04T06:00:00.000Z"
}
}
}
Cost: 0 credits per call
currentCycle to track in-progress crawls
and lastCompletedCycle to know when the most recent data landed.
Parameters
No parameters required.Response
object | null
The currently running crawl cycle, or
null if no cycle is active.Show currentCycle
Show currentCycle
string
Cycle identifier.
string
Always
"running" when present.string
ISO 8601 timestamp when the cycle started.
integer
Total accounts to crawl this cycle.
integer
Accounts successfully crawled so far.
integer
Accounts that failed crawling so far.
integer
New tweets ingested so far.
number
Progress percentage (0–100).
object | null
The most recent successfully completed crawl cycle, or
null if none.Show lastCompletedCycle
Show lastCompletedCycle
string
Cycle identifier.
string
ISO 8601 timestamp when the cycle started.
string
ISO 8601 timestamp when the cycle finished.
integer
How long the cycle took in minutes.
integer
Total accounts crawled.
integer
Accounts successfully crawled.
integer
Accounts that failed.
integer
New tweets ingested.
integer
Existing tweets with updated engagement metrics.
object
{
"success": true,
"data": {
"currentCycle": {
"id": "clxyz123abc",
"status": "running",
"startedAt": "2026-04-04T06:00:12.000Z",
"accountsTargeted": 99000,
"accountsCompleted": 45000,
"accountsFailed": 200,
"tweetsIngested": 152000,
"percentComplete": 45.7
},
"lastCompletedCycle": {
"id": "clxyz789def",
"startedAt": "2026-04-04T00:00:08.000Z",
"completedAt": "2026-04-04T00:42:31.000Z",
"durationMinutes": 42,
"accountsTargeted": 99000,
"accountsCompleted": 98800,
"accountsFailed": 200,
"tweetsIngested": 250000,
"tweetsUpdated": 50000
},
"schedule": {
"intervalHours": 6,
"nextExpectedAt": "2026-04-04T12:00:00.000Z"
}
}
}
{
"success": true,
"data": {
"currentCycle": null,
"lastCompletedCycle": {
"id": "clxyz789def",
"startedAt": "2026-04-04T00:00:08.000Z",
"completedAt": "2026-04-04T00:42:31.000Z",
"durationMinutes": 42,
"accountsTargeted": 99000,
"accountsCompleted": 98800,
"accountsFailed": 200,
"tweetsIngested": 250000,
"tweetsUpdated": 50000
},
"schedule": {
"intervalHours": 6,
"nextExpectedAt": "2026-04-04T06:00:00.000Z"
}
}
}
Was this page helpful?
⌘I
Crawl Status
curl --request GET \
--url https://api.openbits.ai/twitter/v1/bulk-export/crawl-status \
--header 'x-api-key: <api-key>'import requests
url = "https://api.openbits.ai/twitter/v1/bulk-export/crawl-status"
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.openbits.ai/twitter/v1/bulk-export/crawl-status', 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.openbits.ai/twitter/v1/bulk-export/crawl-status",
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.openbits.ai/twitter/v1/bulk-export/crawl-status"
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.openbits.ai/twitter/v1/bulk-export/crawl-status")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.openbits.ai/twitter/v1/bulk-export/crawl-status")
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{
"success": true,
"data": {
"currentCycle": {
"id": "clxyz123abc",
"status": "running",
"startedAt": "2026-04-04T06:00:12.000Z",
"accountsTargeted": 99000,
"accountsCompleted": 45000,
"accountsFailed": 200,
"tweetsIngested": 152000,
"percentComplete": 45.7
},
"lastCompletedCycle": {
"id": "clxyz789def",
"startedAt": "2026-04-04T00:00:08.000Z",
"completedAt": "2026-04-04T00:42:31.000Z",
"durationMinutes": 42,
"accountsTargeted": 99000,
"accountsCompleted": 98800,
"accountsFailed": 200,
"tweetsIngested": 250000,
"tweetsUpdated": 50000
},
"schedule": {
"intervalHours": 6,
"nextExpectedAt": "2026-04-04T12:00:00.000Z"
}
}
}
{
"success": true,
"data": {
"currentCycle": null,
"lastCompletedCycle": {
"id": "clxyz789def",
"startedAt": "2026-04-04T00:00:08.000Z",
"completedAt": "2026-04-04T00:42:31.000Z",
"durationMinutes": 42,
"accountsTargeted": 99000,
"accountsCompleted": 98800,
"accountsFailed": 200,
"tweetsIngested": 250000,
"tweetsUpdated": 50000
},
"schedule": {
"intervalHours": 6,
"nextExpectedAt": "2026-04-04T06:00:00.000Z"
}
}
}