GET /books/artifacts/{artifact_id}/content
Get Artifact Content
Parameters
artifact_id path · requiredRange header · optionalResponse · 200
Successful Response
Documentation
Guides and API reference for browser automation, proxy connections, and research with Hive.
Getting started
Use your Hive API key in the Authorization: Bearer $HIVE_API_KEY header. Send JSON request bodies with Content-Type: application/json. Keep your key on your server.
Examples use https://hive-osint-dev.172-86-73-30.sslip.io as the base URL. Check GET /capabilities before requesting a service. Use a unique Idempotency-Key for tunnel creation and Books submissions; reuse it only when repeating the same request.
Quick start
Set HIVE_API_KEY in your environment, then run this request. The response includes a cdp_url for connecting your automation tool.
curl --fail-with-body -X POST "https://hive-osint-dev.172-86-73-30.sslip.io/browser/session" \
-H "Authorization: Bearer $HIVE_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'Browsers use direct access from Hive by default. To enable a managed proxy, send {"use_proxy":true,"country":"AR"}. Country, region, ASN, mobile network, and identity constraints apply to proxy connections. A country value alone does not change a direct session’s exit IP.
Next, follow the browser automation guide to open a page with Playwright.
Browser transport
import os
from playwright.sync_api import sync_playwright
auth = {"Authorization": "Bearer " + os.environ["HIVE_API_KEY"]}
# session is the result of POST /browser/session.
with sync_playwright() as p:
browser = p.chromium.connect_over_cdp(
session["cdp_url"], headers=auth
)
context = browser.contexts[0]
page = context.pages[0] if context.pages else context.new_page()
page.goto("https://example.com")
browser.close()
# DELETE /browser/session?session_id=... to release the lease.Network transport
import httpx
from urllib.parse import quote
# tunnel is the result of POST /network/tunnels.
ep = tunnel["endpoints"]["http"]
credentials = tunnel["credentials"]
user = quote(credentials["username"], safe="")
password = quote(credentials["password"], safe="")
proxy = f"http://{user}:{password}@{ep['host']}:{ep['port']}"
with httpx.Client(proxy=proxy, timeout=30) as client:
response = client.get("https://example.com")
response.raise_for_status()
# SOCKS clients use endpoints.socks5 with socks5h:// for remote DNS.Resources & exchanges
Create a resource with POST /resources/phone, /resources/mail, /resources/captcha, or /resources/network. Keep the returned resource_id. Read the recorded state with GET, poll for progress with POST, and DELETE the resource when finished.
Phone requests use service and a two-letter country. Mail can specify a domain. Captcha requests use captcha_type with site_key and page_url, or image_b64 for an image. For a browser-bound challenge, supply browser_context with the submitting browser’s user_agent and relevant cookies. Cookie entries use name, value, domain, path, and optional http_only, secure, and expires. Hive forwards that context for the solve without storing cookie values in resource records. A token is ready to submit when the resource becomes ready; the target website still decides whether to accept it. The reference below lists each field.
Exchanges return one result: send messages to POST /exchange/llm or a prompt to POST /exchange/image.
{
"messages": [
{
"role": "user",
"content": "Summarize this paragraph."
}
],
"max_tokens": 200
}Research
Search for people, find company employees, and retrieve public profiles, posts, comments, and reactions. Use filters and pagination to select the results you need.
Check /capabilities for service availability and the API reference for each operation’s request fields. Pagination is finite: limit is 1–1000, page is 1–100, and pages is 1–20, with tighter limits on individual target and filter lists.
POST /scrapers/linkedin/people/searchPOST /scrapers/linkedin/company/employeesPOST /scrapers/linkedin/profile/detailsPOST /scrapers/linkedin/profile/postsPOST /scrapers/linkedin/post/searchPOST /scrapers/linkedin/post/commentsPOST /scrapers/linkedin/profile/commentsPOST /scrapers/linkedin/profile/reactions{
"profiles": [
"https://www.linkedin.com/in/<profile-id>/"
],
"detail_level": "full"
}Public research
Find candidate people and retrieve public profiles and posts on Instagram, X, Facebook, and TikTok; discover username candidates with Sherlock, search Google, and find image matches or text with Google Lens. Use the same Hive bearer key and strict snake_case JSON bodies for every operation. Unknown fields and invalid targets are rejected before work begins.
Profile requests accept 1–10 handles or canonical public URLs in profiles. Facebook also accepts numeric IDs and profile.php URLs. Results contain items, count, and unresolved. Each entry echoes the exact target and zero-based input_index, in input order, including duplicates. Unresolved reasons are not_found, private, unavailable, malformed_data, or ambiguous; omitted profiles are unavailable, not proof of nonexistence. Resolved entries include public source links, and available identity, biography, image, verification, and count fields. Missing optional fields are omitted; profiles can be private, sparse, renamed, or unavailable.
Sherlock accepts 1–5 usernames of up to 64 characters and a limit of 1–100 per distinct username (default 20). Every result has username, site, profile_url, and status: candidate. Matching handles do not establish identity. truncated: true means a work or result limit omitted results; null means completeness is unknown.
Google accepts 1–5 queries, each up to 512 characters and 32 words; pages is 1–3 per query (default 1), and limit is 1–100 results per distinct query (default 20). Optional country and language select a supported two-letter country and search interface language. Organic results preserve query, rank, title, url, and an optional snippet.
Google Lens accepts one public HTTPS image_url or a private uploaded asset_id without credentials or private addresses, plus distinct search_types: visual, exact, and/or text. The URL is at most 4096 characters. limit is 1–100 total records (default 20), interleaved in requested type order. Visual and exact matches carry a title and public URL with optional image metadata; text records carry extracted text. A valid search may return no matches. Results do not promise completeness, totals, or a next page.
Google and Sherlock return up to 500 items for five inputs, grouped in input order; duplicate inputs are collected once. Sherlock scans each username independently so earlier inputs cannot consume later inputs’ collection windows. X account creation dates use ISO 8601 UTC; an ambiguous verification flag without badge type or blue status becomes null.
operation_health provides each operation’s reason, observed_at (Unix time), and retry_after_s. Reasons distinguish rate limiting, timeout, invalid response, limited capacity, service unavailability, missing resources and invalid requests. Capacity is shared across operations and bearer keys on the deployment. Retry timing is a minimum recheck delay; a null value means no delay is known. Elapsed time does not establish recovery. Accounting recovery can clear a capacity failure to unverified until a new search succeeds. Job recovery still uses the original key.
Read scrapers.<name>.status and operation_status from GET /capabilities. unconfigured means no active configuration; configured means all operations are unverified; usable means at least one observed success with no recorded failure; degraded means an operation has a known failure. A usable LinkedIn service does not establish that all eight operations work. Observations survive restart and reset when service configuration changes. Discovery never launches research.
Calls have finite execution limits and create no lease. Do not automatically repeat a timed-out or disconnected research call: work may already have completed. Social posts and people search support same-key recovery, as do Lens jobs. The older synchronous LinkedIn, profile/details, Sherlock, Google and Lens search routes do not support idempotent replay. Errors use bad_request, unauthorized, not_found, idempotency_conflict, expired, rate_limited, unavailable, or upstream_timeout. Invalid Hive authentication returns 401. Invalid fields return 400 with safe field detail before execution. Service failures return 503 unavailable; retained job errors and capability operation status use the same code. Keep using your Hive key. Respect retry_after_s when present.
Upload private image bytes with POST /scrapers/assets and Content-Type image/jpeg, image/png, or image/webp (10 MiB maximum). Use the returned asset_id instead of image_url. Images are encrypted, bearer-scoped, and retained for 24 hours. Their bytes are sent to the image-search service for the requested search. Download with GET /scrapers/assets/{asset_id}; delete with DELETE /scrapers/assets/{asset_id}.
Submit Lens work through POST /scrapers/google_lens/jobs with a required Idempotency-Key. The 202 response contains a poll_url for GET /scrapers/google_lens/jobs/{job_id}. Repeat the same key and body after a lost submission to retrieve the same job. Poll until completed (with result), failed, or outcome_unknown. An interrupted run is never automatically restarted. Results expire after 24 hours (410); keys stay reserved for seven days. Different bodies under one key return 409.
Lens unwraps supported Google redirect links. Embedded thumbnails have a bearer-authenticated Hive image_url, image_sha256, and image_kind: thumbnail. These hashes identify the returned thumbnail bytes, not full-resolution originals. Resolve relative image paths against your Hive origin; send your Hive key only to Hive, never to public image hosts.
Instagram, X, Facebook and TikTok expose native people/search: a free-text query (1–200 characters), up to five locations hints (1–100 characters), and limit 1–50. Hints are appended in caller order to one query; ambiguous names remain text, and city and employer filters are not enforced. The response reports effective_query, location_handling and filters_enforced: false. Instagram commas become spaces to keep one search. Candidates reuse profile fields and add the exact query, absolute rank, status: candidate and missing_fields. Missing biography/avatar fields remain null; collection-wide partial status is carried on every page. Facebook returns people with canonical profile URLs and nullable usernames or IDs; its location line is not a biography. Opaque people links retain their source URL without an inferred handle or numeric ID; details/posts require supported handle or numeric targets. Facebook cards without a usable source profile URL are omitted and make the whole collection partial; if every returned card is unusable, the search fails. TikTok returns user cards. Candidates are not verified identities and have no lookup target attribution.
People search uses the same job, key and cached-page workflow as posts, with at most 50 candidates in native order after identity deduplication. Keep the same query, locations and limit on later pages. No extra profile enrichment occurs. Replays and cached pages never repeat a search. A valid empty result differs from a failed search; completeness remains unknown. Check discovery health separately from profile lookup and posts in operation_status.
Instagram, X, Facebook and TikTok also expose profile/posts. Initial requests require Idempotency-Key; send Prefer: respond-async for a prompt 202 job, or wait up to 20 seconds for a page. Poll GET /scrapers/jobs/{job_id} with your bearer. Repeat the original key and body to recover the same job; results expire after 24 hours.
Posts accept 1–10 profiles and a total page limit of 1–50. Later pages send the same body plus result_id and page, without requiring a key or starting another collection. The cached window contains up to 50 posts per unique target (40 for Facebook) and 500 attributed items. Target outcomes preserve input order and duplicates; a resolved zero-post account differs from an unresolved target. Source authors, carousel order, video thumbnails, actual tags and separate caption mentions are preserved. Facebook covers public people and pages, including numeric profiles, and reports history_scope: recent_public_timeline: usually 25–40 recent public posts. Cached pages cannot retrieve older history. An empty Facebook response remains unresolved when a zero-post count cannot be established. TikTok preserves ordered slideshow photos, playable references when supplied, and separate cover thumbnails; the post page URL is not video bytes. Author country does not establish a post geotag. Null metadata and history_complete: null indicate unknown information. Public media references can expire; send Hive credentials only to Hive.
Set retain_media: true to preserve returned photos and video thumbnails as private JPEG/PNG/WebP evidence. Each media item reports retention_status, a fixed retention_reason, and an optional asset with its authenticated relative URL, exact-byte SHA-256, size, MIME and expiry. The original source URL and original/thumbnail role remain separate. Bounds are 20 unique images, 10 MiB and 40 million pixels each, 32 MiB downloaded per job, two concurrent downloads and up to 30 seconds within the remaining job deadline. Assets share the bearer/global image quotas and expire after 24 hours. Videos remain public references. Unresolved targets, media failures and retention limits set collection-wide partial status on every cached page, even if the affected item is on another page. Duplicate sources reuse assets; replay never redownloads, including after deletion or expiry. Keep the same retention value on cached page requests.
Use an Idempotency-Key of 1–200 printable ASCII characters without spaces. It binds your bearer, service, operation, ordered business request and limit. A different body under the same key, or a changed body/limit with result_id, returns 409 idempotency_conflict. Foreign or wrong-operation references return 404 not_found; expired results return 410 expired. Replay tombstones reserve keys for seven days. Reads never renew expiry. A terminal failed or outcome_unknown job cannot relaunch through replay; keep the key after an interruption.
A 202 submission includes Location, Retry-After: 2 and, when requested, Preference-Applied: respond-async. Polling returns HTTP 200 with the job envelope; completion puts the first page under result. Completed replays and cached pages return HTTP 200 even with Prefer: respond-async. Initial collection starts at page 1; later pages are 1–500 and must stay inside the collected window. An out-of-window page returns 400 bad_request. Follow next_page until null. Polls, replays and cached pages perform zero additional work.
The Bash workflow below needs curl, jq and sha256sum. Choose one service/operation and preserve its key and request. It demonstrates an explicit same-key replay, bounded polling, a second cached page when available, and an authenticated image download. A thumbnail hash identifies that thumbnail’s exact bytes; an original image hash identifies the retained original bytes.
# Run in Bash with curl, jq and sha256sum installed.
set -euo pipefail
: "${HIVE_API_KEY:?Set your Hive bearer in the environment}"
HIVE_ORIGIN="https://hive-osint-dev.172-86-73-30.sslip.io"
HIVE_SERVICE="instagram" # instagram, x, facebook or tiktok
HIVE_OPERATION="profile/posts"
# Keep this key and the exact request after a disconnect; use a new key only
# for an intentional new collection. Do not enable shell tracing.
HIVE_RESEARCH_KEY="investigation-social-001"
request='{"profiles":["nasa"],"limit":2,"retain_media":true}'
# For native people discovery instead, set these before calling submit:
# HIVE_OPERATION="people/search"
# request='{"query":"José García","locations":["Madrid"],"limit":2}'
submit() {
curl --fail-with-body --max-time 30 -sS \
"$HIVE_ORIGIN/scrapers/$HIVE_SERVICE/$HIVE_OPERATION" \
-H "Authorization: Bearer $HIVE_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $HIVE_RESEARCH_KEY" \
-H "Prefer: respond-async" --data "$request"
}
reply="$(submit)"
# If the response was lost, run submit again with the SAME key and request.
# This explicit replay also demonstrates recovery without another collection.
reply="$(submit)"
for ((poll=0; poll<180; poll++)); do
status="$(jq -r '.status // "completed"' <<< "$reply")"
case "$status" in
completed) break ;;
failed|outcome_unknown)
jq '{job_id,status,error}' <<< "$reply"
exit 1 ;; # Keep the key; a new key would start separate work.
pending|running) ;;
*) exit 1 ;;
esac
poll_url="$(jq -r '.poll_url' <<< "$reply")"
[[ "$poll_url" =~ ^/scrapers/jobs/[a-zA-Z0-9_-]+$ ]]
sleep 2
reply="$(curl --fail-with-body --max-time 30 -sS \
"$HIVE_ORIGIN$poll_url" -H "Authorization: Bearer $HIVE_API_KEY")"
done
[[ "$(jq -r '.status // "completed"' <<< "$reply")" == completed ]] || exit 1
page="$(jq '.result // .' <<< "$reply")"
jq '{result_id,page,count,collected_count,next_page,partial}' <<< "$page"
# The first completed page is stable. Follow next_page only when present.
if [[ "$(jq -r '.next_page' <<< "$page")" != null ]]; then
next_request="$(jq --argjson page "$page" \
'. + {result_id:$page.result_id,page:$page.next_page}' <<< "$request")"
curl --fail-with-body --max-time 30 -sS \
"$HIVE_ORIGIN/scrapers/$HIVE_SERVICE/$HIVE_OPERATION" \
-H "Authorization: Bearer $HIVE_API_KEY" \
-H "Content-Type: application/json" --data "$next_request"
fi
# Hash one retained original image or thumbnail from the first page.
asset="$(jq -c '[.items[].media[]? | select(.retention_status == "retained")][0] // null' <<< "$page")"
if [[ "$asset" != null ]]; then
asset_url="$(jq -r '.asset.url' <<< "$asset")"
[[ "$asset_url" =~ ^/scrapers/assets/[a-zA-Z0-9_-]+$ ]]
curl --fail-with-body --max-time 30 -sS \
"$HIVE_ORIGIN$asset_url" -H "Authorization: Bearer $HIVE_API_KEY" \
--output retained-image.bin
expected="$(jq -r '.asset.sha256' <<< "$asset")"
printf '%s retained-image.bin\n' "$expected" | sha256sum --check -
jq '{role,sha256:.asset.sha256,expires_at:.asset.expires_at}' <<< "$asset"
fiThese response shapes are illustrative. Social submission examples show the initial 202 job separately from the completed page under the polled result. A completed replay can return the page directly with 200. Public data and optional fields can differ.
POST /scrapers/instagram/profile/details{
"profiles": [
"nasa"
]
}{
"items": [
{
"username": "nasa",
"profile_url": "https://www.instagram.com/nasa/",
"display_name": "NASA",
"target": "nasa",
"input_index": 0
}
],
"count": 1,
"unresolved": []
}POST /scrapers/instagram/profile/posts{
"Idempotency-Key": "instagram-profile-posts-001",
"Prefer": "respond-async"
}curl --fail-with-body --max-time 30 -sS "https://hive-osint-dev.172-86-73-30.sslip.io/scrapers/instagram/profile/posts" \
-H "Authorization: Bearer $HIVE_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: instagram-profile-posts-001" \
-H "Prefer: respond-async" \
--data '{"profiles":["nasa"],"limit":2}'{
"profiles": [
"nasa"
],
"limit": 2
}{
"job_id": "rjob_aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
"service": "instagram",
"operation": "profile/posts",
"status": "pending",
"created_at": 1789913600,
"expires_at": 1790000000,
"poll_url": "/scrapers/jobs/rjob_aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
"result": null,
"error": null
}{
"items": [
{
"target": "nasa",
"input_index": 0,
"post_id": "123",
"url": "https://www.instagram.com/p/example/",
"author": {
"username": "nasa",
"profile_url": "https://www.instagram.com/nasa"
},
"timestamp": "2026-09-01T12:00:00+00:00",
"text": "Public post example.",
"media": [],
"geotag": null,
"tagged_users": null,
"mentions": null,
"context": []
}
],
"count": 1,
"result_id": "rresult_11111111111111111111111111111111",
"page": 1,
"limit": 2,
"next_page": null,
"collected_count": 1,
"collection_limit": 500,
"expires_at": 1790000000,
"truncated": null,
"partial": false,
"targets": [
{
"target": "nasa",
"input_index": 0,
"status": "resolved",
"collected_count": 1,
"reason": null
}
],
"unresolved": [],
"per_target_limit": 50,
"history_complete": null
}POST /scrapers/instagram/people/search{
"Idempotency-Key": "instagram-people-search-001",
"Prefer": "respond-async"
}curl --fail-with-body --max-time 30 -sS "https://hive-osint-dev.172-86-73-30.sslip.io/scrapers/instagram/people/search" \
-H "Authorization: Bearer $HIVE_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: instagram-people-search-001" \
-H "Prefer: respond-async" \
--data '{"query":"José García","locations":["Madrid"],"limit":2}'{
"query": "José García",
"locations": [
"Madrid"
],
"limit": 2
}{
"job_id": "rjob_aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
"service": "instagram",
"operation": "people/search",
"status": "pending",
"created_at": 1789905600,
"expires_at": 1789992000,
"poll_url": "/scrapers/jobs/rjob_aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
"result": null,
"error": null
}{
"items": [
{
"query": "José García",
"rank": 1,
"status": "candidate",
"username": "example_person",
"profile_url": "https://www.instagram.com/example_person",
"profile_id": "123456",
"display_name": "José García",
"biography": null,
"image_url": "https://images.example.com/avatar.jpg",
"missing_fields": [
"biography"
]
}
],
"count": 1,
"result_id": "rresult_22222222222222222222222222222222",
"page": 1,
"limit": 2,
"next_page": null,
"collected_count": 1,
"collection_limit": 50,
"expires_at": 1789992000,
"truncated": null,
"partial": true,
"query": "José García",
"locations": [
"Madrid"
],
"effective_query": "José García Madrid",
"location_handling": "query_hint",
"filters_enforced": false
}POST /scrapers/x/profile/details{
"profiles": [
"nasa"
]
}{
"items": [
{
"username": "nasa",
"profile_url": "https://x.com/NASA",
"display_name": "NASA",
"target": "nasa",
"input_index": 0
}
],
"count": 1,
"unresolved": []
}POST /scrapers/x/profile/posts{
"Idempotency-Key": "x-profile-posts-001",
"Prefer": "respond-async"
}curl --fail-with-body --max-time 30 -sS "https://hive-osint-dev.172-86-73-30.sslip.io/scrapers/x/profile/posts" \
-H "Authorization: Bearer $HIVE_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: x-profile-posts-001" \
-H "Prefer: respond-async" \
--data '{"profiles":["nasa"],"limit":2}'{
"profiles": [
"nasa"
],
"limit": 2
}{
"job_id": "rjob_aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
"service": "x",
"operation": "profile/posts",
"status": "pending",
"created_at": 1789913600,
"expires_at": 1790000000,
"poll_url": "/scrapers/jobs/rjob_aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
"result": null,
"error": null
}{
"items": [
{
"target": "nasa",
"input_index": 0,
"post_id": "123",
"url": "https://x.com/nasa/status/123",
"author": {
"username": "nasa",
"profile_url": "https://x.com/nasa"
},
"timestamp": "2026-09-01T12:00:00+00:00",
"text": "Public post example.",
"media": [],
"geotag": null,
"tagged_users": null,
"mentions": null,
"context": []
}
],
"count": 1,
"result_id": "rresult_11111111111111111111111111111111",
"page": 1,
"limit": 2,
"next_page": null,
"collected_count": 1,
"collection_limit": 500,
"expires_at": 1790000000,
"truncated": null,
"partial": false,
"targets": [
{
"target": "nasa",
"input_index": 0,
"status": "resolved",
"collected_count": 1,
"reason": null
}
],
"unresolved": [],
"per_target_limit": 50,
"history_complete": null
}POST /scrapers/x/people/search{
"Idempotency-Key": "x-people-search-001",
"Prefer": "respond-async"
}curl --fail-with-body --max-time 30 -sS "https://hive-osint-dev.172-86-73-30.sslip.io/scrapers/x/people/search" \
-H "Authorization: Bearer $HIVE_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: x-people-search-001" \
-H "Prefer: respond-async" \
--data '{"query":"José García","locations":["Madrid"],"limit":2}'{
"query": "José García",
"locations": [
"Madrid"
],
"limit": 2
}{
"job_id": "rjob_aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
"service": "x",
"operation": "people/search",
"status": "pending",
"created_at": 1789905600,
"expires_at": 1789992000,
"poll_url": "/scrapers/jobs/rjob_aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
"result": null,
"error": null
}{
"items": [
{
"query": "José García",
"rank": 1,
"status": "candidate",
"username": "example_person",
"profile_url": "https://x.com/example_person",
"profile_id": "123456",
"display_name": "José García",
"biography": "Synthetic public biography",
"image_url": "https://images.example.com/avatar.jpg",
"missing_fields": [],
"location": "Madrid"
}
],
"count": 1,
"result_id": "rresult_22222222222222222222222222222222",
"page": 1,
"limit": 2,
"next_page": null,
"collected_count": 1,
"collection_limit": 50,
"expires_at": 1789992000,
"truncated": null,
"partial": false,
"query": "José García",
"locations": [
"Madrid"
],
"effective_query": "José García Madrid",
"location_handling": "query_hint",
"filters_enforced": false
}POST /scrapers/facebook/profile/details{
"profiles": [
"nasa"
]
}{
"items": [
{
"username": "nasa",
"profile_url": "https://www.facebook.com/NASA",
"display_name": "NASA",
"target": "nasa",
"input_index": 0
}
],
"count": 1,
"unresolved": []
}POST /scrapers/facebook/profile/posts{
"Idempotency-Key": "facebook-profile-posts-001",
"Prefer": "respond-async"
}curl --fail-with-body --max-time 30 -sS "https://hive-osint-dev.172-86-73-30.sslip.io/scrapers/facebook/profile/posts" \
-H "Authorization: Bearer $HIVE_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: facebook-profile-posts-001" \
-H "Prefer: respond-async" \
--data '{"profiles":["nasa"],"limit":2}'{
"profiles": [
"nasa"
],
"limit": 2
}{
"job_id": "rjob_aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
"service": "facebook",
"operation": "profile/posts",
"status": "pending",
"created_at": 1789913600,
"expires_at": 1790000000,
"poll_url": "/scrapers/jobs/rjob_aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
"result": null,
"error": null
}{
"items": [
{
"target": "nasa",
"input_index": 0,
"post_id": "123",
"url": "https://www.facebook.com/nasa/posts/123",
"author": {
"username": "nasa",
"profile_url": "https://www.facebook.com/nasa"
},
"timestamp": "2026-09-01T12:00:00+00:00",
"text": "Public post example.",
"media": [],
"geotag": null,
"tagged_users": null,
"mentions": null,
"context": []
}
],
"count": 1,
"result_id": "rresult_11111111111111111111111111111111",
"page": 1,
"limit": 2,
"next_page": null,
"collected_count": 1,
"collection_limit": 500,
"expires_at": 1790000000,
"truncated": null,
"partial": false,
"targets": [
{
"target": "nasa",
"input_index": 0,
"status": "resolved",
"collected_count": 1,
"reason": null
}
],
"unresolved": [],
"per_target_limit": 40,
"history_complete": null,
"history_scope": "recent_public_timeline"
}POST /scrapers/facebook/people/search{
"Idempotency-Key": "facebook-people-search-001",
"Prefer": "respond-async"
}curl --fail-with-body --max-time 30 -sS "https://hive-osint-dev.172-86-73-30.sslip.io/scrapers/facebook/people/search" \
-H "Authorization: Bearer $HIVE_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: facebook-people-search-001" \
-H "Prefer: respond-async" \
--data '{"query":"José García","locations":["Madrid"],"limit":2}'{
"query": "José García",
"locations": [
"Madrid"
],
"limit": 2
}{
"job_id": "rjob_aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
"service": "facebook",
"operation": "people/search",
"status": "pending",
"created_at": 1789905600,
"expires_at": 1789992000,
"poll_url": "/scrapers/jobs/rjob_aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
"result": null,
"error": null
}{
"items": [
{
"query": "José García",
"rank": 1,
"status": "candidate",
"username": null,
"profile_url": "https://www.facebook.com/profile.php?id=123456",
"profile_id": "123456",
"display_name": "José García",
"biography": null,
"image_url": "https://images.example.com/avatar.jpg",
"missing_fields": [
"biography"
],
"profile_type": "person",
"location": "Madrid"
}
],
"count": 1,
"result_id": "rresult_22222222222222222222222222222222",
"page": 1,
"limit": 2,
"next_page": null,
"collected_count": 1,
"collection_limit": 50,
"expires_at": 1789992000,
"truncated": null,
"partial": true,
"query": "José García",
"locations": [
"Madrid"
],
"effective_query": "José García Madrid",
"location_handling": "query_hint",
"filters_enforced": false
}POST /scrapers/tiktok/profile/details{
"profiles": [
"nasa"
]
}{
"items": [
{
"username": "nasa",
"profile_url": "https://www.tiktok.com/@nasa",
"display_name": "NASA",
"target": "nasa",
"input_index": 0
}
],
"count": 1,
"unresolved": []
}POST /scrapers/tiktok/profile/posts{
"Idempotency-Key": "tiktok-profile-posts-001",
"Prefer": "respond-async"
}curl --fail-with-body --max-time 30 -sS "https://hive-osint-dev.172-86-73-30.sslip.io/scrapers/tiktok/profile/posts" \
-H "Authorization: Bearer $HIVE_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: tiktok-profile-posts-001" \
-H "Prefer: respond-async" \
--data '{"profiles":["nasa"],"limit":2}'{
"profiles": [
"nasa"
],
"limit": 2
}{
"job_id": "rjob_aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
"service": "tiktok",
"operation": "profile/posts",
"status": "pending",
"created_at": 1789913600,
"expires_at": 1790000000,
"poll_url": "/scrapers/jobs/rjob_aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
"result": null,
"error": null
}{
"items": [
{
"target": "nasa",
"input_index": 0,
"post_id": "123",
"url": "https://www.tiktok.com/@nasa/video/123",
"author": {
"username": "nasa",
"profile_url": "https://www.tiktok.com/@nasa"
},
"timestamp": "2026-09-01T12:00:00+00:00",
"text": "Public post example.",
"media": [],
"geotag": null,
"tagged_users": null,
"mentions": null,
"context": []
}
],
"count": 1,
"result_id": "rresult_11111111111111111111111111111111",
"page": 1,
"limit": 2,
"next_page": null,
"collected_count": 1,
"collection_limit": 500,
"expires_at": 1790000000,
"truncated": null,
"partial": false,
"targets": [
{
"target": "nasa",
"input_index": 0,
"status": "resolved",
"collected_count": 1,
"reason": null
}
],
"unresolved": [],
"per_target_limit": 50,
"history_complete": null,
"history_scope": "collected_window"
}POST /scrapers/tiktok/people/search{
"Idempotency-Key": "tiktok-people-search-001",
"Prefer": "respond-async"
}curl --fail-with-body --max-time 30 -sS "https://hive-osint-dev.172-86-73-30.sslip.io/scrapers/tiktok/people/search" \
-H "Authorization: Bearer $HIVE_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: tiktok-people-search-001" \
-H "Prefer: respond-async" \
--data '{"query":"José García","locations":["Madrid"],"limit":2}'{
"query": "José García",
"locations": [
"Madrid"
],
"limit": 2
}{
"job_id": "rjob_aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
"service": "tiktok",
"operation": "people/search",
"status": "pending",
"created_at": 1789905600,
"expires_at": 1789992000,
"poll_url": "/scrapers/jobs/rjob_aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
"result": null,
"error": null
}{
"items": [
{
"query": "José García",
"rank": 1,
"status": "candidate",
"username": "example_person",
"profile_url": "https://www.tiktok.com/@example_person",
"profile_id": "123456",
"display_name": "José García",
"biography": "Synthetic public biography",
"image_url": "https://images.example.com/avatar.jpg",
"missing_fields": []
}
],
"count": 1,
"result_id": "rresult_22222222222222222222222222222222",
"page": 1,
"limit": 2,
"next_page": null,
"collected_count": 1,
"collection_limit": 50,
"expires_at": 1789992000,
"truncated": null,
"partial": false,
"query": "José García",
"locations": [
"Madrid"
],
"effective_query": "José García Madrid",
"location_handling": "query_hint",
"filters_enforced": false
}POST /scrapers/sherlock/search{
"usernames": [
"nasa"
],
"limit": 20
}{
"items": [
{
"username": "nasa",
"site": "GitHub",
"profile_url": "https://github.com/nasa",
"status": "candidate"
}
],
"count": 1,
"truncated": null
}POST /scrapers/google/search{
"queries": [
"site:nasa.gov Artemis"
],
"limit": 20,
"pages": 1,
"country": "us",
"language": "en"
}{
"items": [
{
"query": "site:nasa.gov Artemis",
"rank": 1,
"title": "Artemis",
"url": "https://www.nasa.gov/artemis/",
"snippet": "Explore the Artemis program."
}
],
"count": 1
}POST /scrapers/google_lens/search{
"image_url": "https://gpm.nasa.gov/sites/default/files/document_files/NASA-Logo-Large.png",
"search_types": [
"visual",
"exact",
"text"
],
"limit": 20
}{
"items": [
{
"type": "visual",
"title": "NASA",
"url": "https://www.nasa.gov/"
},
{
"type": "exact",
"title": "NASA logo",
"url": "https://www.nasa.gov/logos/"
},
{
"type": "text",
"text": "NASA"
}
],
"count": 3
}Books
Submit POST /books/queries, then poll the opaque query ID. Inspect results through GET /books/items/{book_id}. Submit POST /books/downloads, poll the download, and retrieve its artifact when ready.
Query and download submissions require an Idempotency-Key. Availability is reported separately in /capabilities; configuration alone does not establish a working download.
{
"query": "Pride and Prejudice",
"limit": 10
}Use a returned book_id and one of its available formats in the download body: {"book_id":"<returned-book-id>","format":"epub"}.
Reference
Renew before lease_expires_at to keep using the same route and credentials. Browser sessions can run for up to one hour; max_expires_at gives the final deadline. Create a new session once the current one expires.
Use rotate when you need a new exit IP. Hive checks the replacement against your requested country, region, ASN, and network type. If no matching replacement is available, your current connection stays in place.
Pass the same identity_token to request a sticky allocation. A request that cannot preserve that identity fails rather than assigning a different one. Use mobile: true; non-mobile allocations are currently unavailable.
Browser WebSocket connections use your Hive bearer key. Proxy connections use the separate username and password returned when you create a tunnel. Save those credentials from the creation response.
SOCKS5 and HTTP proxy authentication travels unencrypted. HTTPS CONNECT encrypts traffic to the destination after the proxy handshake; it does not encrypt the proxy credentials.
Errors
400 invalid request · 401 invalid Hive authentication · 403 forbidden · 404 not found · 409 conflicting or expired state · 429 rate limited · 503 service or constraints unavailable · 504 timeout.
Errors expose stable error codes. Do not blindly retry allocations or timed-out research calls. Reuse an idempotency key where supported, and inspect an existing resource before creating another.
API reference
All endpoints use the same base URL. Fields marked required must be supplied.
/books/artifacts/{artifact_id}/contentGet Artifact Content
artifact_id path · requiredRange header · optionalSuccessful Response
/books/downloadsSubmit Download
Idempotency-Key header · optionalSee the lifecycle example for this operation.
Successful Response
/books/downloads/{download_id}Get Download
download_id path · requiredSuccessful Response
/books/items/{book_id}Get Item
book_id path · requiredSuccessful Response
/books/queriesSubmit Query
Idempotency-Key header · optionalSee the lifecycle example for this operation.
Successful Response
/books/queries/{query_id}Get Query
query_id path · requiredSuccessful Response
/browser/sessionClose a browser session
session_id query · requiredSuccess
/browser/sessionInspect a browser session
session_id query · requiredSuccess
automation_protocol cdp · requiredcdp_url string · optionallease_expires_at string · optionalFormat: date-time.
max_expires_at string · optionalFixed one-hour session deadline. Renewal cannot extend it. Format: date-time.
session_id string · requiredstatus string · optionalviewer_url string · optionalws_endpoint string · optional/browser/sessionCreate a managed CDP browser
Idempotency-Key header · optionalReuse the same key and request to replay a successful allocation.
asn string | integer | null · optionalDefault: null.
country string · optionalProxy exit country when use_proxy is true. Does not change the exit IP of a direct session. Pattern: ^[A-Za-z]{2}$. Default: "US".
identity_token string | null · optionalDefault: null. Minimum length: 1. Maximum length: 128.
mobile boolean · optionalDefault: true.
region string | null · optionalDefault: null. Minimum length: 1. Maximum length: 100.
use_proxy boolean · optionalOpt into managed proxy access. Omit or set false for direct access from Hive. Default: false.
window_size string · optionalPattern: ^[1-9][0-9]{2,3}x[1-9][0-9]{2,3}$. Default: "1280x720".
Success
automation_protocol cdp · requiredcdp_url string · optionallease_expires_at string · optionalFormat: date-time.
max_expires_at string · optionalFixed one-hour session deadline. Renewal cannot extend it. Format: date-time.
session_id string · requiredstatus string · optionalviewer_url string · optionalws_endpoint string · optional/browser/session/renewExtend the existing browser lease
session_id query · requiredSuccess
automation_protocol cdp · requiredcdp_url string · optionallease_expires_at string · optionalFormat: date-time.
max_expires_at string · optionalFixed one-hour session deadline. Renewal cannot extend it. Format: date-time.
session_id string · requiredstatus string · optionalviewer_url string · optionalws_endpoint string · optional/capabilitiesDiscover services and supported constraints
Inspect each scraper's operation_status and operation_health. Each health entry has reason (null, rate_limited, timeout, invalid_response, capacity_limited, service_unavailable, not_found, or invalid_request), observed_at (Unix seconds or null), and retry_after_s (remaining minimum recheck delay or null when unknown). Capacity is shared across operations and bearer keys on this deployment. Discovery never starts research. An elapsed delay does not prove recovery; recover existing jobs with the original idempotency key.
Success
/exchange/imageGenerate image artifacts
count integer · optionalMinimum: 1. Maximum: 4.
prompt string · requiredMinimum length: 1.
size string · optionalSuccess
/exchange/llmGenerate a completion
max_tokens integer · optionalMinimum: 1. Maximum: 16384.
messages object[] · requiredMinimum items: 1.
messages[].content string · requiredmessages[].role string · requiredresponse_format object · optionalSuccess
/healthzRead service availability
Success
/network/pinDiscover an available geographic and ASN pin
country query · requiredregion query · optionalasn query · optionalmobile query · optionalSuccess
/network/tunnelsRevoke all tunnels owned by this API key
Success
/network/tunnelsCreate a verified network tunnel
Idempotency-Key header · optionalReuse the same key and request to replay a successful allocation.
asn string | integer | null · optionalDefault: null.
country string · requiredPattern: ^[A-Za-z]{2}$.
identity_token string | null · optionalDefault: null. Minimum length: 1. Maximum length: 128.
idle_timeout_s integer | null · optionalDefault: null. Minimum: 1.
max_bytes integer | null · optionalDefault: null. Minimum: 1.
max_connections integer | null · optionalDefault: null. Minimum: 1.
mobile boolean · optionalDefault: true.
region string | null · optionalDefault: null. Minimum length: 1. Maximum length: 100.
source_ip string | null · optionalDefault: null.
ttl_s integer | null · optionalDefault: null. Minimum: 1.
Success
created_at string · optionalFormat: date-time.
credentials object · optionalcredentials.password string · requiredcredentials.username string · requiredendpoints object · optionalendpoints.http object · optionalendpoints.http.host string · requiredendpoints.http.port integer · requiredendpoints.http.scheme string · requiredendpoints.socks5 object · optionalendpoints.socks5.host string · requiredendpoints.socks5.port integer · requiredendpoints.socks5.scheme string · requiredid string · optionallease_expires_at string · optionalFormat: date-time.
limits object · optionallimits.idle_timeout_s integer · optionallimits.max_bytes integer · optionallimits.max_connections integer · optionallimits.max_ttl_s integer · optionalnetwork object · optionalnetwork.connection_type string · optionalnetwork.exit object · optionalnetwork.exit.asn string · optionalnetwork.exit.country string · optionalnetwork.exit.hosting boolean · optionalnetwork.exit.ip string · optionalnetwork.exit.isp string · optionalnetwork.exit.mobile boolean · optionalnetwork.exit.region string · optionalnetwork.exit.verified_at string · optionalFormat: date-time.
network.quality object · optionalnetwork.quality.verified boolean · optionalnetwork.rotatable boolean · optionalnetwork.rotation object · optionalnetwork.rotation.rotated boolean · optionalsource_bound boolean · optionalstatus string · optionalterminal_reason string | null · optionalupdated_at string · optionalFormat: date-time.
/network/tunnels/{tunnel_id}Revoke a tunnel
tunnel_id path · requiredSuccess
/network/tunnels/{tunnel_id}Inspect a tunnel
tunnel_id path · requiredSuccess
created_at string · optionalFormat: date-time.
endpoints object · optionalendpoints.http object · optionalendpoints.http.host string · requiredendpoints.http.port integer · requiredendpoints.http.scheme string · requiredendpoints.socks5 object · optionalendpoints.socks5.host string · requiredendpoints.socks5.port integer · requiredendpoints.socks5.scheme string · requiredid string · optionallease_expires_at string · optionalFormat: date-time.
limits object · optionallimits.idle_timeout_s integer · optionallimits.max_bytes integer · optionallimits.max_connections integer · optionallimits.max_ttl_s integer · optionalnetwork object · optionalnetwork.connection_type string · optionalnetwork.exit object · optionalnetwork.exit.asn string · optionalnetwork.exit.country string · optionalnetwork.exit.hosting boolean · optionalnetwork.exit.ip string · optionalnetwork.exit.isp string · optionalnetwork.exit.mobile boolean · optionalnetwork.exit.region string · optionalnetwork.exit.verified_at string · optionalFormat: date-time.
network.quality object · optionalnetwork.quality.verified boolean · optionalnetwork.rotatable boolean · optionalnetwork.rotation object · optionalnetwork.rotation.rotated boolean · optionalsource_bound boolean · optionalstatus string · optionalterminal_reason string | null · optionalupdated_at string · optionalFormat: date-time.
/network/tunnels/{tunnel_id}/credentialsReplace tunnel credentials
tunnel_id path · requiredSuccess
credentials object · optionalcredentials.password string · requiredcredentials.username string · requiredid string · optional/network/tunnels/{tunnel_id}/renewExtend the lease without changing the exit
tunnel_id path · requiredttl_s integer · optionalMinimum: 1.
Success
created_at string · optionalFormat: date-time.
endpoints object · optionalendpoints.http object · optionalendpoints.http.host string · requiredendpoints.http.port integer · requiredendpoints.http.scheme string · requiredendpoints.socks5 object · optionalendpoints.socks5.host string · requiredendpoints.socks5.port integer · requiredendpoints.socks5.scheme string · requiredid string · optionallease_expires_at string · optionalFormat: date-time.
limits object · optionallimits.idle_timeout_s integer · optionallimits.max_bytes integer · optionallimits.max_connections integer · optionallimits.max_ttl_s integer · optionalnetwork object · optionalnetwork.connection_type string · optionalnetwork.exit object · optionalnetwork.exit.asn string · optionalnetwork.exit.country string · optionalnetwork.exit.hosting boolean · optionalnetwork.exit.ip string · optionalnetwork.exit.isp string · optionalnetwork.exit.mobile boolean · optionalnetwork.exit.region string · optionalnetwork.exit.verified_at string · optionalFormat: date-time.
network.quality object · optionalnetwork.quality.verified boolean · optionalnetwork.rotatable boolean · optionalnetwork.rotation object · optionalnetwork.rotation.rotated boolean · optionalsource_bound boolean · optionalstatus string · optionalterminal_reason string | null · optionalupdated_at string · optionalFormat: date-time.
/network/tunnels/{tunnel_id}/rotateSelect a verified different exit with the same constraints
tunnel_id path · requiredSuccess
created_at string · optionalFormat: date-time.
endpoints object · optionalendpoints.http object · optionalendpoints.http.host string · requiredendpoints.http.port integer · requiredendpoints.http.scheme string · requiredendpoints.socks5 object · optionalendpoints.socks5.host string · requiredendpoints.socks5.port integer · requiredendpoints.socks5.scheme string · requiredid string · optionallease_expires_at string · optionalFormat: date-time.
limits object · optionallimits.idle_timeout_s integer · optionallimits.max_bytes integer · optionallimits.max_connections integer · optionallimits.max_ttl_s integer · optionalnetwork object · optionalnetwork.connection_type string · optionalnetwork.exit object · optionalnetwork.exit.asn string · optionalnetwork.exit.country string · optionalnetwork.exit.hosting boolean · optionalnetwork.exit.ip string · optionalnetwork.exit.isp string · optionalnetwork.exit.mobile boolean · optionalnetwork.exit.region string · optionalnetwork.exit.verified_at string · optionalFormat: date-time.
network.quality object · optionalnetwork.quality.verified boolean · optionalnetwork.rotatable boolean · optionalnetwork.rotation object · optionalnetwork.rotation.rotated boolean · optionalsource_bound boolean · optionalstatus string · optionalterminal_reason string | null · optionalupdated_at string · optionalFormat: date-time.
/readyzRead service availability
Success
/resources/captchaCreate a captcha resource
Idempotency-Key header · optionalReuse the same key and request to replay a successful allocation.
Provide captcha_type and the matching site_key/page_url or image_b64, or the equivalent descriptor.
action string · optionalbrowser_context object · optionalOptional context from the browser submitting the token. Cookie values are transient and are not stored in Hive resource records. Only include cookies needed for this CAPTCHA. Context support depends on solver availability; unsupported combinations fail explicitly.
browser_context.cookies object[] · optionalMaximum items: 100.
browser_context.cookies[].domain string · requiredbrowser_context.cookies[].expires number · optionalUnix timestamp; omit or use -1 for session cookies.
browser_context.cookies[].http_only boolean · optionalDefault: false.
browser_context.cookies[].name string · requiredbrowser_context.cookies[].path string · requiredbrowser_context.cookies[].secure boolean · optionalDefault: false.
browser_context.cookies[].value string · requiredbrowser_context.user_agent string · optionalMinimum length: 1. Maximum length: 1024.
captcha_type recaptcha_v2 | recaptcha_v2_enterprise | recaptcha_v3 | hcaptcha | turnstile | image · optionaldescriptor object · optionaldescriptor.action string · optionaldescriptor.browser_context object · optionalOptional context from the browser submitting the token. Cookie values are transient and are not stored in Hive resource records. Only include cookies needed for this CAPTCHA. Context support depends on solver availability; unsupported combinations fail explicitly.
descriptor.browser_context.cookies object[] · optionalMaximum items: 100.
descriptor.browser_context.cookies[].domain string · requireddescriptor.browser_context.cookies[].expires number · optionalUnix timestamp; omit or use -1 for session cookies.
descriptor.browser_context.cookies[].http_only boolean · optionalDefault: false.
descriptor.browser_context.cookies[].name string · requireddescriptor.browser_context.cookies[].path string · requireddescriptor.browser_context.cookies[].secure boolean · optionalDefault: false.
descriptor.browser_context.cookies[].value string · requireddescriptor.browser_context.user_agent string · optionalMinimum length: 1. Maximum length: 1024.
descriptor.enterprise boolean · optionaldescriptor.image_b64 string · optionaldescriptor.min_score number · optionalMinimum: 0. Maximum: 1.
descriptor.page_url string · optionalFormat: uri.
descriptor.site_key string · optionaldescriptor.type recaptcha_v2 | recaptcha_v2_enterprise | recaptcha_v3 | hcaptcha | turnstile | image · optionalenterprise boolean · optionalimage_b64 string · optionalmin_score number · optionalMinimum: 0. Maximum: 1.
page_url string · optionalFormat: uri.
site_key string · optionalSuccess
/resources/mailCreate a mail resource
Idempotency-Key header · optionalReuse the same key and request to replay a successful allocation.
country string · optionalPattern: ^[A-Za-z]{2}$.
domain string · optionalservice string · optionalSuccess
/resources/networkCreate a network resource
Idempotency-Key header · optionalReuse the same key and request to replay a successful allocation.
asn string | integer | null · optionalDefault: null.
country string · requiredPattern: ^[A-Za-z]{2}$.
identity_token string | null · optionalDefault: null. Minimum length: 1. Maximum length: 128.
mobile boolean · optionalDefault: true.
region string | null · optionalDefault: null. Minimum length: 1. Maximum length: 100.
Success
/resources/phoneCreate a phone resource
Idempotency-Key header · optionalReuse the same key and request to replay a successful allocation.
country string · optionalPattern: ^[A-Za-z]{2}$.
service string · optionalSuccess
/resources/{resource_id}Release a resource
resource_id path · requiredSuccess
/resources/{resource_id}Read a resource
resource_id path · requiredSuccess
/resources/{resource_id}/pollPoll resource progress
resource_id path · requiredIdempotency-Key header · optionalReuse the same key and request to replay a successful allocation.
Success
/resources/{resource_id}/renewExtend the resource lease
resource_id path · requiredIdempotency-Key header · optionalReuse the same key and request to replay a successful allocation.
Success
/scrapers/assetsUpload Research Image
Upload private image bytes (10 MiB maximum); retained encrypted for 24 hours.
Successful Response
asset_id string · requiredexpires_at integer · requiredmedia_type image/jpeg | image/png | image/webp · requiredsha256 string · requiredsize_bytes integer · requiredurl string · requiredBearer-authenticated, relative Hive download URL.
/scrapers/assets/{asset_id}Delete Research Image
Delete an image. Already-submitted jobs retain their private input copy until completion.
asset_id path · requiredSuccessful Response
/scrapers/assets/{asset_id}Download Research Image
Download this bearer's uploaded image, Lens thumbnail or retained post image before its expiry.
asset_id path · requiredSuccessful Response
/scrapers/facebook/people/searchFacebook People Search
Collect at most 50 native people candidates, including numeric profiles without usernames. Opaque people links retain their returned URL without an inferred numeric ID or username; details/posts still require supported handle or numeric targets. Location texts are appended in caller order as query hints, never enforced city filters. Prefer: respond-async returns promptly; default wait is at most 20 seconds. Cached pages/replays launch no new work.
Idempotency-Key header · optionalRequired for initial collection; cached result_id pages need no key.
prefer header · optionallimit integer · optionalMinimum: 1. Maximum: 50. Default: 20.
locations string[] · optionalUp to five location hints of 1–100 characters, appended in caller order to one native query. Ambiguous names remain text; no city resolution or AND/OR geographic filters are enforced. Maximum items: 5.
page integer · optionalOne-based cached page. Initial collection requires page 1; later pages require result_id and cannot extend the collected window. Minimum: 1. Maximum: 500. Default: 1.
query string · requiredFree-text name, optionally with employer/city. Echoed exactly; matching does not verify identity or enforce filters. Minimum length: 1. Maximum length: 200.
result_id string | null · optionalOwner- and operation-bound immutable collection. Keep the same business request, ordered inputs and limit. Cached pages require no Idempotency-Key and launch no additional work. Pattern: ^rresult_[a-f0-9]{32}$.
Successful Response
collected_count integer · requiredMinimum: 0. Maximum: 500.
collection_limit integer · requiredMinimum: 1. Maximum: 500.
count integer · requiredMinimum: 0. Maximum: 50.
effective_query string · requiredText sent to native account search, including location hints. Instagram commas become spaces to keep one query.
expires_at integer · requiredUnix seconds; the collection expires 24 hours after submission. Polling, replay and cached pages do not renew it.
filters_enforced false · requiredCity and employer restrictions are not enforced. Returned accounts are candidates, never verified identities.
items object[] · requiredMaximum items: 50.
items[].biography string | null · optionalitems[].category string | null · optionalitems[].cover_image_url string | null · optionalitems[].display_name string | null · optionalitems[].followers_count integer | null · optionalMinimum: 0.
items[].following_count integer | null · optionalMinimum: 0.
items[].image_url string | null · optionalitems[].is_private boolean | null · optionalitems[].is_verified boolean | null · optionalitems[].likes_count integer | null · optionalMinimum: 0.
items[].location string | null · optionalitems[].missing_fields display_name | biography | image_url[] · requiredUnavailable core profile fields. No inferred or purchased enrichment. Maximum items: 3.
items[].posts_count integer | null · optionalMinimum: 0.
items[].profile_id string | null · optionalitems[].profile_type person | page | null · optionalitems[].profile_url string · requireditems[].public_links object[] | null · optionalitems[].query string · requireditems[].rank integer · requiredAbsolute one-based position after canonical account deduplication, preserving native order. Minimum: 1. Maximum: 50.
items[].status candidate · requireditems[].username string | null · optionalitems[].website_url string | null · optionallimit integer · requiredMinimum: 1. Maximum: 50.
location_handling not_requested | query_hint · requiredlocations string[] · requirednext_page integer | null · requiredMinimum: 2. Maximum: 500.
page integer · requiredMinimum: 1. Maximum: 500.
partial boolean · requiredCollection-wide flag repeated on every cached page: missing candidate core fields, unresolved post targets, or image retention failures/limits can set it, even when absent from this page.
query string · requiredresult_id string · requiredPattern: ^rresult_[a-f0-9]{32}$.
truncated true | null · requiredTrue when collection omitted results; null means completeness is unknown.
Durable native people search; poll the owner-scoped URL.
created_at integer · requirederror string | null · optionalexpires_at integer · requiredjob_id string · requiredoperation string · requiredpoll_url string · requiredRelative Hive URL. Poll with the same bearer; GET returns this job envelope (200), with the completed first page under result. Terminal failed/outcome_unknown jobs never relaunch on replay.
result object | null · optionalservice string · requiredstatus pending | running | completed | failed | outcome_unknown · required/scrapers/facebook/profile/detailsFacebook Profile Details
Retrieve public Facebook profile or page details for up to ten targets.
One to ten Facebook handles, numeric IDs, or canonical profile/page URLs.
profiles string[] · requiredMinimum items: 1. Maximum items: 10.
Successful Response
count integer · requiredMinimum: 0. Maximum: 10.
items object[] · requiredMaximum items: 10.
items[].biography string | null · optionalitems[].category string | null · optionalitems[].cover_image_url string | null · optionalitems[].display_name string | null · optionalitems[].followers_count integer | null · optionalMinimum: 0.
items[].following_count integer | null · optionalMinimum: 0.
items[].image_url string | null · optionalitems[].input_index integer · requiredMinimum: 0. Maximum: 9.
items[].is_private boolean | null · optionalitems[].is_verified boolean | null · optionalitems[].likes_count integer | null · optionalMinimum: 0.
items[].location string | null · optionalitems[].posts_count integer | null · optionalMinimum: 0.
items[].profile_id string | null · optionalitems[].profile_type person | page | null · optionalitems[].profile_url string · requireditems[].public_links object[] | null · optionalitems[].target string · requireditems[].username string | null · optionalitems[].website_url string | null · optionalunresolved object[] · requiredMaximum items: 10.
unresolved[].input_index integer · requiredMinimum: 0. Maximum: 9.
unresolved[].reason not_found | private | unavailable | malformed_data | ambiguous · requiredunresolved[].target string · required/scrapers/facebook/profile/postsFacebook Profile Posts
Return recent public person/page posts, including numeric profiles. At most 40 posts per target; pages cannot recover older history. Prefer: respond-async submits promptly.
Idempotency-Key header · optionalRequired for initial collection; cached result_id pages need no key.
prefer header · optionalCollect up to 40 recent public posts per unique person or page; older history is unavailable.
limit integer · optionalMinimum: 1. Maximum: 50. Default: 20.
page integer · optionalOne-based cached page. Initial collection requires page 1; later pages require result_id and cannot extend the collected window. Minimum: 1. Maximum: 500. Default: 1.
profiles string[] · requiredMinimum items: 1. Maximum items: 10.
result_id string | null · optionalOwner- and operation-bound immutable collection. Keep the same business request, ordered inputs and limit. Cached pages require no Idempotency-Key and launch no additional work. Pattern: ^rresult_[a-f0-9]{32}$.
retain_media boolean · optionalPreserve up to 20 unique photos/video thumbnails (JPEG/PNG/WebP), 10 MiB and 40 million pixels each, 32 MiB downloaded per job, two at once for up to 30 seconds within the remaining job deadline. No video download. Assets share bearer/global quotas and expire after 24 hours. Cached pages/replay never download again. Default: false.
Successful Response
collected_count integer · requiredMinimum: 0. Maximum: 500.
collection_limit integer · requiredMinimum: 1. Maximum: 500.
count integer · requiredMinimum: 0. Maximum: 50.
expires_at integer · requiredUnix seconds; the collection expires 24 hours after submission. Polling, replay and cached pages do not renew it.
history_complete null · requiredFull platform history is unknown. Pages cover only the cached collection.
history_scope collected_window | recent_public_timeline · optionalFacebook is limited to recent publicly visible timeline posts (typically 25–40); cached pages cannot retrieve older history. Default: "collected_window".
items object[] · requiredMaximum items: 50.
items[].author object · requireditems[].author.display_name string | null · optionalitems[].author.image_url string | null · optionalitems[].author.profile_id string | null · optionalitems[].author.profile_url string · requireditems[].author.username string | null · optionalitems[].comments_count integer | null · optionalMinimum: 0.
items[].context object[] · requiredMaximum items: 2.
items[].context[].author object · requireditems[].context[].author.display_name string | null · optionalitems[].context[].author.image_url string | null · optionalitems[].context[].author.profile_id string | null · optionalitems[].context[].author.profile_url string · requireditems[].context[].author.username string | null · optionalitems[].context[].comments_count integer | null · optionalMinimum: 0.
items[].context[].geotag object | null · requireditems[].context[].kind repost | quote · requireditems[].context[].likes_count integer | null · optionalMinimum: 0.
items[].context[].media object[] · requiredMaximum items: 100.
items[].context[].media[].asset object | null · optionalitems[].context[].media[].bitrate integer | null · optionalMinimum: 0.
items[].context[].media[].group_index integer · requiredZero-based position in the source carousel; variants share a group. Minimum: 0. Maximum: 49.
items[].context[].media[].mime_type string | null · optionalitems[].context[].media[].retention_reason not_requested | video_not_retained | count_limit | job_byte_limit | destination_rejected | source_unavailable | unsupported_format | invalid_image | too_large | quota_exceeded | timeout | download_failed | storage_unavailable | null · optionalDefault: "not_requested".
items[].context[].media[].retention_status retained | skipped | failed · optionalDefault: "skipped".
items[].context[].media[].role original | thumbnail · requireditems[].context[].media[].type image | video · requireditems[].context[].media[].url string · requiredOriginal public source reference; may expire. Separate from the authenticated retained asset URL.
items[].context[].mentions object[] | null · requiredCaption/text mentions, separate from actual tags. Maximum items: 100.
items[].context[].post_id string · requireditems[].context[].quotes_count integer | null · optionalMinimum: 0.
items[].context[].reposts_count integer | null · optionalMinimum: 0.
items[].context[].tagged_users object[] | null · requiredActual source tags; null means unavailable. Maximum items: 100.
items[].context[].text string | null · requireditems[].context[].timestamp string | null · requiredUTC ISO 8601 time; null means unavailable, never inferred epoch zero.
items[].context[].url string · requireditems[].context[].views_count integer | null · optionalMinimum: 0.
items[].geotag object | null · requireditems[].input_index integer · requiredMinimum: 0. Maximum: 9.
items[].is_pinned boolean | null · optionalitems[].is_quote boolean | null · optionalitems[].is_repost boolean | null · optionalitems[].likes_count integer | null · optionalMinimum: 0.
items[].media object[] · requiredMaximum items: 100.
items[].media[].asset object | null · optionalitems[].media[].bitrate integer | null · optionalMinimum: 0.
items[].media[].group_index integer · requiredZero-based position in the source carousel; variants share a group. Minimum: 0. Maximum: 49.
items[].media[].mime_type string | null · optionalitems[].media[].retention_reason not_requested | video_not_retained | count_limit | job_byte_limit | destination_rejected | source_unavailable | unsupported_format | invalid_image | too_large | quota_exceeded | timeout | download_failed | storage_unavailable | null · optionalDefault: "not_requested".
items[].media[].retention_status retained | skipped | failed · optionalDefault: "skipped".
items[].media[].role original | thumbnail · requireditems[].media[].type image | video · requireditems[].media[].url string · requiredOriginal public source reference; may expire. Separate from the authenticated retained asset URL.
items[].mentions object[] | null · requiredCaption/text mentions, separate from actual tags. Maximum items: 100.
items[].post_id string · requireditems[].quotes_count integer | null · optionalMinimum: 0.
items[].reposts_count integer | null · optionalMinimum: 0.
items[].tagged_users object[] | null · requiredActual source tags; null means unavailable. Maximum items: 100.
items[].target string · requireditems[].text string | null · requireditems[].timestamp string | null · requiredUTC ISO 8601 time; null means unavailable, never inferred epoch zero.
items[].url string · requireditems[].views_count integer | null · optionalMinimum: 0.
limit integer · requiredMinimum: 1. Maximum: 50.
next_page integer | null · requiredMinimum: 2. Maximum: 500.
page integer · requiredMinimum: 1. Maximum: 500.
partial boolean · requiredCollection-wide flag repeated on every cached page: missing candidate core fields, unresolved post targets, or image retention failures/limits can set it, even when absent from this page.
per_target_limit integer · requiredMinimum: 1. Maximum: 50.
result_id string · requiredPattern: ^rresult_[a-f0-9]{32}$.
targets object[] · requiredMaximum items: 10.
targets[].collected_count integer · requiredMinimum: 0. Maximum: 50.
targets[].input_index integer · requiredMinimum: 0. Maximum: 9.
targets[].reason not_found | private | unavailable | malformed_data | ambiguous | null · requiredtargets[].status resolved | unresolved · requiredtargets[].target string · requiredtruncated true | null · requiredTrue when collection omitted results; null means completeness is unknown.
unresolved object[] · requiredMaximum items: 10.
unresolved[].input_index integer · requiredMinimum: 0. Maximum: 9.
unresolved[].reason not_found | private | unavailable | malformed_data | ambiguous · requiredunresolved[].target string · requiredDurable job; poll the returned owner-scoped URL.
created_at integer · requirederror string | null · optionalexpires_at integer · requiredjob_id string · requiredoperation string · requiredpoll_url string · requiredRelative Hive URL. Poll with the same bearer; GET returns this job envelope (200), with the completed first page under result. Terminal failed/outcome_unknown jobs never relaunch on replay.
result object | null · optionalservice string · requiredstatus pending | running | completed | failed | outcome_unknown · required/scrapers/google/searchGoogle Search
Search Google for bounded organic results, preserving each query and its reported rank.
One to five queries of up to 32 words; search operators are supported.
country string | null · optionalSupported two-letter search country code, such as us or gb. Minimum length: 2. Maximum length: 2.
language string | null · optionalSearch interface language, such as en, zh-CN or pt-BR; does not restrict result language. Minimum length: 2. Maximum length: 5.
limit integer · optionalMaximum organic results per distinct query. Minimum: 1. Maximum: 100. Default: 20.
pages integer · optionalMaximum pages per query. Minimum: 1. Maximum: 3. Default: 1.
queries string[] · requiredMinimum items: 1. Maximum items: 5.
Successful Response
count integer · requiredMinimum: 0. Maximum: 500.
items object[] · requiredMaximum items: 500.
items[].query string · requireditems[].rank integer · requiredMinimum: 1.
items[].snippet string | null · optionalitems[].title string · requireditems[].url string · required/scrapers/google_lens/jobsSubmit Google Lens Job
Submit once and safely replay the same key and body for seven days. Poll the returned URL; interrupted work is not automatically repeated.
Idempotency-Key header · requiredSearch one public HTTPS image or an owner-scoped uploaded image.
asset_id string | null · optionalPrivate image from POST /scrapers/assets; mutually exclusive with image_url. Pattern: ^rasset_[a-f0-9]{32}$.
image_url string | null · optionalPublic HTTPS image URL without credentials or private addresses. Minimum length: 1. Maximum length: 4096.
limit integer · optionalMaximum total records across all requested types, interleaved in the requested order. Minimum: 1. Maximum: 100. Default: 20.
search_types visual | exact | text[] · requiredMinimum items: 1. Maximum items: 3. Items must be distinct.
Successful Response
created_at integer · requirederror string | null · optionalexpires_at integer · requiredjob_id string · requiredpoll_url string · requiredresult object | null · optionalstatus pending | running | completed | failed | outcome_unknown · required/scrapers/google_lens/jobs/{job_id}Get Google Lens Job
Poll without starting a new search. Results expire after 24 hours.
job_id path · requiredSuccessful Response
created_at integer · requirederror string | null · optionalexpires_at integer · requiredjob_id string · requiredpoll_url string · requiredresult object | null · optionalstatus pending | running | completed | failed | outcome_unknown · required/scrapers/google_lens/searchGoogle Lens Search
Find visual or exact image matches and extract text using Google Lens. Results share one total limit; a search can return no matches.
Search one public HTTPS image or an owner-scoped uploaded image.
asset_id string | null · optionalPrivate image from POST /scrapers/assets; mutually exclusive with image_url. Pattern: ^rasset_[a-f0-9]{32}$.
image_url string | null · optionalPublic HTTPS image URL without credentials or private addresses. Minimum length: 1. Maximum length: 4096.
limit integer · optionalMaximum total records across all requested types, interleaved in the requested order. Minimum: 1. Maximum: 100. Default: 20.
search_types visual | exact | text[] · requiredMinimum items: 1. Maximum items: 3. Items must be distinct.
Successful Response
count integer · requiredMinimum: 0. Maximum: 100.
items object | object[] · requiredMaximum items: 100.
items[].image_expires_at integer | null · optionalitems[].image_height integer | null · optionalMinimum: 1. Maximum: 100000.
items[].image_kind thumbnail | null · optionalitems[].image_sha256 string | null · optionalPattern: ^[a-f0-9]{64}$.
items[].image_url string | null · optionalMaximum length: 4096.
items[].image_width integer | null · optionalMinimum: 1. Maximum: 100000.
items[].source string | null · optionalMaximum length: 512.
items[].source_icon_url string | null · optionalMaximum length: 4096.
items[].title string · requiredMinimum length: 1. Maximum length: 4096.
items[].type visual | exact · requireditems[].url string · requiredMaximum length: 4096.
items[].text string · requiredMinimum length: 1. Maximum length: 20000.
items[].type text · requiredpartial boolean | null · optional/scrapers/instagram/people/searchInstagram People Search
Collect at most 50 native account candidates. Commas become spaces; locations are query hints. Missing biography/avatar fields are explicit. Prefer: respond-async returns promptly; default wait is at most 20 seconds. Cached pages/replays launch no new work.
Idempotency-Key header · optionalRequired for initial collection; cached result_id pages need no key.
prefer header · optionallimit integer · optionalMinimum: 1. Maximum: 50. Default: 20.
locations string[] · optionalUp to five location hints of 1–100 characters, appended in caller order to one native query. Ambiguous names remain text; no city resolution or AND/OR geographic filters are enforced. Maximum items: 5.
page integer · optionalOne-based cached page. Initial collection requires page 1; later pages require result_id and cannot extend the collected window. Minimum: 1. Maximum: 500. Default: 1.
query string · requiredFree-text name, optionally with employer/city. Echoed exactly; matching does not verify identity or enforce filters. Minimum length: 1. Maximum length: 200.
result_id string | null · optionalOwner- and operation-bound immutable collection. Keep the same business request, ordered inputs and limit. Cached pages require no Idempotency-Key and launch no additional work. Pattern: ^rresult_[a-f0-9]{32}$.
Successful Response
collected_count integer · requiredMinimum: 0. Maximum: 500.
collection_limit integer · requiredMinimum: 1. Maximum: 500.
count integer · requiredMinimum: 0. Maximum: 50.
effective_query string · requiredText sent to native account search, including location hints. Instagram commas become spaces to keep one query.
expires_at integer · requiredUnix seconds; the collection expires 24 hours after submission. Polling, replay and cached pages do not renew it.
filters_enforced false · requiredCity and employer restrictions are not enforced. Returned accounts are candidates, never verified identities.
items object[] · requiredMaximum items: 50.
items[].biography string | null · optionalitems[].category string | null · optionalitems[].display_name string | null · optionalitems[].followers_count integer | null · optionalMinimum: 0.
items[].following_count integer | null · optionalMinimum: 0.
items[].image_url string | null · optionalitems[].is_business boolean | null · optionalitems[].is_private boolean | null · optionalitems[].is_verified boolean | null · optionalitems[].missing_fields display_name | biography | image_url[] · requiredUnavailable core profile fields. No inferred or purchased enrichment. Maximum items: 3.
items[].posts_count integer | null · optionalMinimum: 0.
items[].profile_id string | null · optionalitems[].profile_url string · requireditems[].public_links object[] | null · optionalitems[].query string · requireditems[].rank integer · requiredAbsolute one-based position after canonical account deduplication, preserving native order. Minimum: 1. Maximum: 50.
items[].status candidate · requireditems[].username string · requireditems[].website_url string | null · optionallimit integer · requiredMinimum: 1. Maximum: 50.
location_handling not_requested | query_hint · requiredlocations string[] · requirednext_page integer | null · requiredMinimum: 2. Maximum: 500.
page integer · requiredMinimum: 1. Maximum: 500.
partial boolean · requiredCollection-wide flag repeated on every cached page: missing candidate core fields, unresolved post targets, or image retention failures/limits can set it, even when absent from this page.
query string · requiredresult_id string · requiredPattern: ^rresult_[a-f0-9]{32}$.
truncated true | null · requiredTrue when collection omitted results; null means completeness is unknown.
Durable native account search; poll the owner-scoped URL.
created_at integer · requirederror string | null · optionalexpires_at integer · requiredjob_id string · requiredoperation string · requiredpoll_url string · requiredRelative Hive URL. Poll with the same bearer; GET returns this job envelope (200), with the completed first page under result. Terminal failed/outcome_unknown jobs never relaunch on replay.
result object | null · optionalservice string · requiredstatus pending | running | completed | failed | outcome_unknown · required/scrapers/instagram/profile/detailsInstagram Profile Details
Retrieve public Instagram profile details for up to ten handles or URLs.
One to ten Instagram handles or canonical public profile URLs.
profiles string[] · requiredMinimum items: 1. Maximum items: 10.
Successful Response
count integer · requiredMinimum: 0. Maximum: 10.
items object[] · requiredMaximum items: 10.
items[].biography string | null · optionalitems[].category string | null · optionalitems[].display_name string | null · optionalitems[].followers_count integer | null · optionalMinimum: 0.
items[].following_count integer | null · optionalMinimum: 0.
items[].image_url string | null · optionalitems[].input_index integer · requiredMinimum: 0. Maximum: 9.
items[].is_business boolean | null · optionalitems[].is_private boolean | null · optionalitems[].is_verified boolean | null · optionalitems[].posts_count integer | null · optionalMinimum: 0.
items[].profile_id string | null · optionalitems[].profile_url string · requireditems[].public_links object[] | null · optionalitems[].target string · requireditems[].username string · requireditems[].website_url string | null · optionalunresolved object[] · requiredMaximum items: 10.
unresolved[].input_index integer · requiredMinimum: 0. Maximum: 9.
unresolved[].reason not_found | private | unavailable | malformed_data | ambiguous · requiredunresolved[].target string · required/scrapers/instagram/profile/postsInstagram Profile Posts
Return a cached page or wait up to 20 seconds. Prefer: respond-async submits promptly. Media URLs may expire; full history is unknown.
Idempotency-Key header · optionalRequired for initial collection; cached result_id pages need no key.
prefer header · optionalCollect up to 50 posts per unique profile; page the stable cached window.
limit integer · optionalMinimum: 1. Maximum: 50. Default: 20.
page integer · optionalOne-based cached page. Initial collection requires page 1; later pages require result_id and cannot extend the collected window. Minimum: 1. Maximum: 500. Default: 1.
profiles string[] · requiredMinimum items: 1. Maximum items: 10.
result_id string | null · optionalOwner- and operation-bound immutable collection. Keep the same business request, ordered inputs and limit. Cached pages require no Idempotency-Key and launch no additional work. Pattern: ^rresult_[a-f0-9]{32}$.
retain_media boolean · optionalPreserve up to 20 unique photos/video thumbnails (JPEG/PNG/WebP), 10 MiB and 40 million pixels each, 32 MiB downloaded per job, two at once for up to 30 seconds within the remaining job deadline. No video download. Assets share bearer/global quotas and expire after 24 hours. Cached pages/replay never download again. Default: false.
Successful Response
collected_count integer · requiredMinimum: 0. Maximum: 500.
collection_limit integer · requiredMinimum: 1. Maximum: 500.
count integer · requiredMinimum: 0. Maximum: 50.
expires_at integer · requiredUnix seconds; the collection expires 24 hours after submission. Polling, replay and cached pages do not renew it.
history_complete null · requiredFull platform history is unknown. Pages cover only the cached collection.
history_scope collected_window | recent_public_timeline · optionalFacebook is limited to recent publicly visible timeline posts (typically 25–40); cached pages cannot retrieve older history. Default: "collected_window".
items object[] · requiredMaximum items: 50.
items[].author object · requireditems[].author.display_name string | null · optionalitems[].author.image_url string | null · optionalitems[].author.profile_id string | null · optionalitems[].author.profile_url string · requireditems[].author.username string | null · optionalitems[].comments_count integer | null · optionalMinimum: 0.
items[].context object[] · requiredMaximum items: 2.
items[].context[].author object · requireditems[].context[].author.display_name string | null · optionalitems[].context[].author.image_url string | null · optionalitems[].context[].author.profile_id string | null · optionalitems[].context[].author.profile_url string · requireditems[].context[].author.username string | null · optionalitems[].context[].comments_count integer | null · optionalMinimum: 0.
items[].context[].geotag object | null · requireditems[].context[].kind repost | quote · requireditems[].context[].likes_count integer | null · optionalMinimum: 0.
items[].context[].media object[] · requiredMaximum items: 100.
items[].context[].media[].asset object | null · optionalitems[].context[].media[].bitrate integer | null · optionalMinimum: 0.
items[].context[].media[].group_index integer · requiredZero-based position in the source carousel; variants share a group. Minimum: 0. Maximum: 49.
items[].context[].media[].mime_type string | null · optionalitems[].context[].media[].retention_reason not_requested | video_not_retained | count_limit | job_byte_limit | destination_rejected | source_unavailable | unsupported_format | invalid_image | too_large | quota_exceeded | timeout | download_failed | storage_unavailable | null · optionalDefault: "not_requested".
items[].context[].media[].retention_status retained | skipped | failed · optionalDefault: "skipped".
items[].context[].media[].role original | thumbnail · requireditems[].context[].media[].type image | video · requireditems[].context[].media[].url string · requiredOriginal public source reference; may expire. Separate from the authenticated retained asset URL.
items[].context[].mentions object[] | null · requiredCaption/text mentions, separate from actual tags. Maximum items: 100.
items[].context[].post_id string · requireditems[].context[].quotes_count integer | null · optionalMinimum: 0.
items[].context[].reposts_count integer | null · optionalMinimum: 0.
items[].context[].tagged_users object[] | null · requiredActual source tags; null means unavailable. Maximum items: 100.
items[].context[].text string | null · requireditems[].context[].timestamp string | null · requiredUTC ISO 8601 time; null means unavailable, never inferred epoch zero.
items[].context[].url string · requireditems[].context[].views_count integer | null · optionalMinimum: 0.
items[].geotag object | null · requireditems[].input_index integer · requiredMinimum: 0. Maximum: 9.
items[].is_pinned boolean | null · optionalitems[].is_quote boolean | null · optionalitems[].is_repost boolean | null · optionalitems[].likes_count integer | null · optionalMinimum: 0.
items[].media object[] · requiredMaximum items: 100.
items[].media[].asset object | null · optionalitems[].media[].bitrate integer | null · optionalMinimum: 0.
items[].media[].group_index integer · requiredZero-based position in the source carousel; variants share a group. Minimum: 0. Maximum: 49.
items[].media[].mime_type string | null · optionalitems[].media[].retention_reason not_requested | video_not_retained | count_limit | job_byte_limit | destination_rejected | source_unavailable | unsupported_format | invalid_image | too_large | quota_exceeded | timeout | download_failed | storage_unavailable | null · optionalDefault: "not_requested".
items[].media[].retention_status retained | skipped | failed · optionalDefault: "skipped".
items[].media[].role original | thumbnail · requireditems[].media[].type image | video · requireditems[].media[].url string · requiredOriginal public source reference; may expire. Separate from the authenticated retained asset URL.
items[].mentions object[] | null · requiredCaption/text mentions, separate from actual tags. Maximum items: 100.
items[].post_id string · requireditems[].quotes_count integer | null · optionalMinimum: 0.
items[].reposts_count integer | null · optionalMinimum: 0.
items[].tagged_users object[] | null · requiredActual source tags; null means unavailable. Maximum items: 100.
items[].target string · requireditems[].text string | null · requireditems[].timestamp string | null · requiredUTC ISO 8601 time; null means unavailable, never inferred epoch zero.
items[].url string · requireditems[].views_count integer | null · optionalMinimum: 0.
limit integer · requiredMinimum: 1. Maximum: 50.
next_page integer | null · requiredMinimum: 2. Maximum: 500.
page integer · requiredMinimum: 1. Maximum: 500.
partial boolean · requiredCollection-wide flag repeated on every cached page: missing candidate core fields, unresolved post targets, or image retention failures/limits can set it, even when absent from this page.
per_target_limit integer · requiredMinimum: 1. Maximum: 50.
result_id string · requiredPattern: ^rresult_[a-f0-9]{32}$.
targets object[] · requiredMaximum items: 10.
targets[].collected_count integer · requiredMinimum: 0. Maximum: 50.
targets[].input_index integer · requiredMinimum: 0. Maximum: 9.
targets[].reason not_found | private | unavailable | malformed_data | ambiguous | null · requiredtargets[].status resolved | unresolved · requiredtargets[].target string · requiredtruncated true | null · requiredTrue when collection omitted results; null means completeness is unknown.
unresolved object[] · requiredMaximum items: 10.
unresolved[].input_index integer · requiredMinimum: 0. Maximum: 9.
unresolved[].reason not_found | private | unavailable | malformed_data | ambiguous · requiredunresolved[].target string · requiredDurable job; poll the returned owner-scoped URL.
created_at integer · requirederror string | null · optionalexpires_at integer · requiredjob_id string · requiredoperation string · requiredpoll_url string · requiredRelative Hive URL. Poll with the same bearer; GET returns this job envelope (200), with the completed first page under result. Terminal failed/outcome_unknown jobs never relaunch on replay.
result object | null · optionalservice string · requiredstatus pending | running | completed | failed | outcome_unknown · required/scrapers/jobs/{job_id}Get Social Research Job
Poll this bearer's social research job without launching external work.
job_id path · requiredSuccessful Response
created_at integer · requirederror string | null · optionalexpires_at integer · requiredjob_id string · requiredoperation string · requiredpoll_url string · requiredRelative Hive URL. Poll with the same bearer; GET returns this job envelope (200), with the completed first page under result. Terminal failed/outcome_unknown jobs never relaunch on replay.
result object | null · optionalservice string · requiredstatus pending | running | completed | failed | outcome_unknown · requiredcreated_at integer · requirederror string | null · optionalexpires_at integer · requiredjob_id string · requiredoperation string · requiredpoll_url string · requiredRelative Hive URL. Poll with the same bearer; GET returns this job envelope (200), with the completed first page under result. Terminal failed/outcome_unknown jobs never relaunch on replay.
result object | null · optionalservice string · requiredstatus pending | running | completed | failed | outcome_unknown · requiredcreated_at integer · requirederror string | null · optionalexpires_at integer · requiredjob_id string · requiredoperation string · requiredpoll_url string · requiredRelative Hive URL. Poll with the same bearer; GET returns this job envelope (200), with the completed first page under result. Terminal failed/outcome_unknown jobs never relaunch on replay.
result object | null · optionalservice string · requiredstatus pending | running | completed | failed | outcome_unknown · requiredcreated_at integer · requirederror string | null · optionalexpires_at integer · requiredjob_id string · requiredoperation string · requiredpoll_url string · requiredRelative Hive URL. Poll with the same bearer; GET returns this job envelope (200), with the completed first page under result. Terminal failed/outcome_unknown jobs never relaunch on replay.
result object | null · optionalservice string · requiredstatus pending | running | completed | failed | outcome_unknown · requiredcreated_at integer · requirederror string | null · optionalexpires_at integer · requiredjob_id string · requiredoperation string · requiredpoll_url string · requiredRelative Hive URL. Poll with the same bearer; GET returns this job envelope (200), with the completed first page under result. Terminal failed/outcome_unknown jobs never relaunch on replay.
result object | null · optionalservice string · requiredstatus pending | running | completed | failed | outcome_unknown · required/scrapers/linkedin/company/employeesCompany Employees
Retrieve public LinkedIn data using the documented filters and pagination fields.
companies string[] · requiredMinimum items: 1. Maximum items: 20.
company_headcounts string[] · optionalMaximum items: 10.
detail_level basic | full · optionalDefault: "basic".
exclude_functions string[] · optionalMaximum items: 30.
exclude_industries string[] · optionalMaximum items: 50.
exclude_locations string[] · optionalMaximum items: 50.
exclude_past_titles string[] · optionalMaximum items: 50.
exclude_seniority_levels string[] · optionalMaximum items: 20.
exclude_titles string[] · optionalMaximum items: 50.
experience_levels string[] · optionalMaximum items: 10.
functions string[] · optionalMaximum items: 30.
industries string[] · optionalMaximum items: 50.
limit integer · optionalMinimum: 1. Maximum: 1000. Default: 100.
locations string[] · optionalMaximum items: 50.
page integer · optionalMinimum: 1. Maximum: 100. Default: 1.
pages integer · optionalMinimum: 1. Maximum: 20. Default: 1.
past_titles string[] · optionalMaximum items: 50.
query string | null · optionalMinimum length: 1. Maximum length: 300.
recently_changed_jobs boolean | null · optionalseniority_levels string[] · optionalMaximum items: 20.
titles string[] · optionalMaximum items: 50.
years_at_company string[] · optionalMaximum items: 10.
Successful Response
count integer · requireditems object[] · requireditems[].about string | null · optionalitems[].certifications object[] · optionalitems[].certifications[].credential_id string | null · optionalitems[].certifications[].credential_url string | null · optionalitems[].certifications[].expires_at string | null · optionalitems[].certifications[].issued_at string | null · optionalitems[].certifications[].issuer string | null · optionalitems[].certifications[].name string | null · optionalitems[].connection_count integer | null · optionalitems[].courses object[] · optionalitems[].courses[].associated_with string | null · optionalitems[].courses[].name string | null · optionalitems[].courses[].number string | null · optionalitems[].current_positions object[] · optionalitems[].current_positions[].company string | null · optionalitems[].current_positions[].company_url string | null · optionalitems[].current_positions[].date_range object | null · optionalitems[].current_positions[].description string | null · optionalitems[].current_positions[].duration string | null · optionalitems[].current_positions[].employment_type string | null · optionalitems[].current_positions[].location string | null · optionalitems[].current_positions[].skills string[] · optionalitems[].current_positions[].title string | null · optionalitems[].current_positions[].workplace_type string | null · optionalitems[].education object[] · optionalitems[].education[].activities string | null · optionalitems[].education[].date_range object | null · optionalitems[].education[].degree string | null · optionalitems[].education[].description string | null · optionalitems[].education[].field_of_study string | null · optionalitems[].education[].school string | null · optionalitems[].education[].school_url string | null · optionalitems[].experience object[] · optionalitems[].experience[].company string | null · optionalitems[].experience[].company_url string | null · optionalitems[].experience[].date_range object | null · optionalitems[].experience[].description string | null · optionalitems[].experience[].duration string | null · optionalitems[].experience[].employment_type string | null · optionalitems[].experience[].location string | null · optionalitems[].experience[].skills string[] · optionalitems[].experience[].title string | null · optionalitems[].experience[].workplace_type string | null · optionalitems[].first_name string | null · optionalitems[].follower_count integer | null · optionalitems[].headline string | null · optionalitems[].honors object[] · optionalitems[].honors[].description string | null · optionalitems[].honors[].issued_at string | null · optionalitems[].honors[].issuer string | null · optionalitems[].honors[].title string | null · optionalitems[].image object | null · optionalitems[].languages object[] · optionalitems[].languages[].name string · requireditems[].languages[].proficiency string | null · optionalitems[].last_name string | null · optionalitems[].location string | null · optionalitems[].name string | null · optionalitems[].profile_url string | null · optionalitems[].projects object[] · optionalitems[].projects[].date_range object | null · optionalitems[].projects[].description string | null · optionalitems[].projects[].name string | null · optionalitems[].projects[].url string | null · optionalitems[].public_id string | null · optionalitems[].publications object[] · optionalitems[].publications[].description string | null · optionalitems[].publications[].published_at string | null · optionalitems[].publications[].publisher string | null · optionalitems[].publications[].title string | null · optionalitems[].publications[].url string | null · optionalitems[].recommendations object[] · optionalitems[].recommendations[].author object | null · optionalitems[].recommendations[].relationship string | null · optionalitems[].recommendations[].text string | null · optionalitems[].skills object[] · optionalitems[].skills[].endorsements integer | null · optionalitems[].skills[].name string · requireditems[].volunteering object[] · optionalitems[].volunteering[].cause string | null · optionalitems[].volunteering[].date_range object | null · optionalitems[].volunteering[].description string | null · optionalitems[].volunteering[].organization string | null · optionalitems[].volunteering[].role string | null · optionalnext_page integer | null · optionalpage integer | null · optionaltotal integer | null · optional/scrapers/linkedin/people/searchPeople Search
Retrieve public LinkedIn data using the documented filters and pagination fields.
company_headcounts string[] · optionalMaximum items: 10.
company_locations string[] · optionalMaximum items: 70.
current_companies string[] · optionalMaximum items: 50.
current_titles string[] · optionalMaximum items: 50.
detail_level basic | full · optionalDefault: "basic".
exclude_company_locations string[] · optionalMaximum items: 70.
exclude_current_companies string[] · optionalMaximum items: 50.
exclude_current_titles string[] · optionalMaximum items: 50.
exclude_functions string[] · optionalMaximum items: 30.
exclude_industries string[] · optionalMaximum items: 50.
exclude_locations string[] · optionalMaximum items: 70.
exclude_past_companies string[] · optionalMaximum items: 50.
exclude_past_titles string[] · optionalMaximum items: 50.
exclude_schools string[] · optionalMaximum items: 50.
exclude_seniority_levels string[] · optionalMaximum items: 20.
experience_levels string[] · optionalMaximum items: 10.
first_names string[] · optionalMaximum items: 50.
functions string[] · optionalMaximum items: 30.
industries string[] · optionalMaximum items: 50.
languages string[] · optionalMaximum items: 20.
last_names string[] · optionalMaximum items: 50.
limit integer · optionalMinimum: 1. Maximum: 1000. Default: 100.
locations string[] · optionalMaximum items: 70.
page integer · optionalMinimum: 1. Maximum: 100. Default: 1.
pages integer · optionalMinimum: 1. Maximum: 20. Default: 1.
past_companies string[] · optionalMaximum items: 50.
past_titles string[] · optionalMaximum items: 50.
query string | null · optionalMinimum length: 1. Maximum length: 300.
recently_changed_jobs boolean | null · optionalrecently_posted boolean | null · optionalschools string[] · optionalMaximum items: 50.
seniority_levels string[] · optionalMaximum items: 20.
years_at_company string[] · optionalMaximum items: 10.
Successful Response
count integer · requireditems object[] · requireditems[].about string | null · optionalitems[].certifications object[] · optionalitems[].certifications[].credential_id string | null · optionalitems[].certifications[].credential_url string | null · optionalitems[].certifications[].expires_at string | null · optionalitems[].certifications[].issued_at string | null · optionalitems[].certifications[].issuer string | null · optionalitems[].certifications[].name string | null · optionalitems[].connection_count integer | null · optionalitems[].courses object[] · optionalitems[].courses[].associated_with string | null · optionalitems[].courses[].name string | null · optionalitems[].courses[].number string | null · optionalitems[].current_positions object[] · optionalitems[].current_positions[].company string | null · optionalitems[].current_positions[].company_url string | null · optionalitems[].current_positions[].date_range object | null · optionalitems[].current_positions[].description string | null · optionalitems[].current_positions[].duration string | null · optionalitems[].current_positions[].employment_type string | null · optionalitems[].current_positions[].location string | null · optionalitems[].current_positions[].skills string[] · optionalitems[].current_positions[].title string | null · optionalitems[].current_positions[].workplace_type string | null · optionalitems[].education object[] · optionalitems[].education[].activities string | null · optionalitems[].education[].date_range object | null · optionalitems[].education[].degree string | null · optionalitems[].education[].description string | null · optionalitems[].education[].field_of_study string | null · optionalitems[].education[].school string | null · optionalitems[].education[].school_url string | null · optionalitems[].experience object[] · optionalitems[].experience[].company string | null · optionalitems[].experience[].company_url string | null · optionalitems[].experience[].date_range object | null · optionalitems[].experience[].description string | null · optionalitems[].experience[].duration string | null · optionalitems[].experience[].employment_type string | null · optionalitems[].experience[].location string | null · optionalitems[].experience[].skills string[] · optionalitems[].experience[].title string | null · optionalitems[].experience[].workplace_type string | null · optionalitems[].first_name string | null · optionalitems[].follower_count integer | null · optionalitems[].headline string | null · optionalitems[].honors object[] · optionalitems[].honors[].description string | null · optionalitems[].honors[].issued_at string | null · optionalitems[].honors[].issuer string | null · optionalitems[].honors[].title string | null · optionalitems[].image object | null · optionalitems[].languages object[] · optionalitems[].languages[].name string · requireditems[].languages[].proficiency string | null · optionalitems[].last_name string | null · optionalitems[].location string | null · optionalitems[].name string | null · optionalitems[].profile_url string | null · optionalitems[].projects object[] · optionalitems[].projects[].date_range object | null · optionalitems[].projects[].description string | null · optionalitems[].projects[].name string | null · optionalitems[].projects[].url string | null · optionalitems[].public_id string | null · optionalitems[].publications object[] · optionalitems[].publications[].description string | null · optionalitems[].publications[].published_at string | null · optionalitems[].publications[].publisher string | null · optionalitems[].publications[].title string | null · optionalitems[].publications[].url string | null · optionalitems[].recommendations object[] · optionalitems[].recommendations[].author object | null · optionalitems[].recommendations[].relationship string | null · optionalitems[].recommendations[].text string | null · optionalitems[].skills object[] · optionalitems[].skills[].endorsements integer | null · optionalitems[].skills[].name string · requireditems[].volunteering object[] · optionalitems[].volunteering[].cause string | null · optionalitems[].volunteering[].date_range object | null · optionalitems[].volunteering[].description string | null · optionalitems[].volunteering[].organization string | null · optionalitems[].volunteering[].role string | null · optionalnext_page integer | null · optionalpage integer | null · optionaltotal integer | null · optional/scrapers/linkedin/post/commentsPost Comments
Retrieve public LinkedIn data using the documented filters and pagination fields.
freshness hour | day | week | month | three_months | six_months | year | null · optionalinclude_replies boolean · optionalDefault: true.
limit integer · optionalMinimum: 1. Maximum: 1000. Default: 100.
page integer · optionalMinimum: 1. Maximum: 100. Default: 1.
pages integer · optionalMinimum: 1. Maximum: 20. Default: 1.
posts string[] · requiredMinimum items: 1. Maximum items: 20.
replies_limit integer · optionalMinimum: 0. Maximum: 100. Default: 5.
since string | null · optionalFormat: date-time.
Successful Response
count integer · requireditems object[] · requireditems[].author object | null · optionalitems[].comment_id string | null · optionalitems[].comment_url string | null · optionalitems[].created_at string | null · optionalitems[].metrics object | null · optionalitems[].parent_comment_id string | null · optionalitems[].post object | null · optionalitems[].replies object[] · optionalitems[].replies[].author object | null · optionalitems[].replies[].comment_id string | null · optionalitems[].replies[].comment_url string | null · optionalitems[].replies[].created_at string | null · optionalitems[].replies[].metrics object | null · optionalitems[].replies[].parent_comment_id string | null · optionalitems[].replies[].text string | null · optionalitems[].text string | null · optionalnext_page integer | null · optionalpage integer | null · optionaltotal integer | null · optional/scrapers/linkedin/post/searchPost Search
Retrieve public LinkedIn data using the documented filters and pagination fields.
author_companies string[] · optionalMaximum items: 10.
author_industries string[] · optionalMaximum items: 20.
author_keywords string | null · optionalMinimum length: 1. Maximum length: 300.
author_profiles string[] · optionalMaximum items: 10.
authors_employers string[] · optionalMaximum items: 20.
comments_freshness hour | day | week | month | three_months | six_months | year | null · optionalcomments_limit integer · optionalMinimum: 0. Maximum: 100. Default: 0.
content_type all | videos | images | jobs | live_videos | documents | collaborative_articles · optionalDefault: "all".
freshness hour | day | week | month | three_months | six_months | year | null · optionallimit integer · optionalMinimum: 1. Maximum: 1000. Default: 100.
mentioned_companies string[] · optionalMaximum items: 10.
mentioned_profiles string[] · optionalMaximum items: 10.
page integer · optionalMinimum: 1. Maximum: 100. Default: 1.
pages integer · optionalMinimum: 1. Maximum: 20. Default: 1.
queries string[] · requiredMinimum items: 1. Maximum items: 20.
reactions_limit integer · optionalMinimum: 0. Maximum: 100. Default: 0.
since string | null · optionalFormat: date-time.
sort relevance | date · optionalDefault: "relevance".
Successful Response
count integer · requireditems object[] · requireditems[].author object | null · optionalitems[].comments object[] · optionalitems[].comments[].author object | null · optionalitems[].comments[].comment_id string | null · optionalitems[].comments[].comment_url string | null · optionalitems[].comments[].created_at string | null · optionalitems[].comments[].metrics object | null · optionalitems[].comments[].parent_comment_id string | null · optionalitems[].comments[].post object | null · optionalitems[].comments[].replies object[] · optionalitems[].comments[].replies[].author object | null · optionalitems[].comments[].replies[].comment_id string | null · optionalitems[].comments[].replies[].comment_url string | null · optionalitems[].comments[].replies[].created_at string | null · optionalitems[].comments[].replies[].metrics object | null · optionalitems[].comments[].replies[].parent_comment_id string | null · optionalitems[].comments[].replies[].text string | null · optionalitems[].comments[].text string | null · optionalitems[].content_type string | null · optionalitems[].media object[] · optionalitems[].media[].description string | null · optionalitems[].media[].image object | null · optionalitems[].media[].kind string | null · optionalitems[].media[].title string | null · optionalitems[].media[].url string | null · optionalitems[].metrics object | null · optionalitems[].post_id string | null · optionalitems[].post_url string | null · optionalitems[].posted_at string | null · optionalitems[].reactions object[] · optionalitems[].reactions[].author object | null · optionalitems[].reactions[].created_at string | null · optionalitems[].reactions[].kind string | null · optionalitems[].reactions[].post object | null · optionalitems[].reactions[].reaction_id string | null · optionalitems[].text string | null · optionalnext_page integer | null · optionalpage integer | null · optionaltotal integer | null · optional/scrapers/linkedin/profile/commentsProfile Comments
Retrieve public LinkedIn data using the documented filters and pagination fields.
freshness hour | day | week | month | three_months | six_months | year | null · optionallimit integer · optionalMinimum: 1. Maximum: 1000. Default: 100.
page integer · optionalMinimum: 1. Maximum: 100. Default: 1.
pages integer · optionalMinimum: 1. Maximum: 20. Default: 1.
profiles string[] · requiredMinimum items: 1. Maximum items: 20.
since string | null · optionalFormat: date-time.
Successful Response
count integer · requireditems object[] · requireditems[].author object | null · optionalitems[].comment_id string | null · optionalitems[].comment_url string | null · optionalitems[].created_at string | null · optionalitems[].metrics object | null · optionalitems[].parent_comment_id string | null · optionalitems[].post object | null · optionalitems[].replies object[] · optionalitems[].replies[].author object | null · optionalitems[].replies[].comment_id string | null · optionalitems[].replies[].comment_url string | null · optionalitems[].replies[].created_at string | null · optionalitems[].replies[].metrics object | null · optionalitems[].replies[].parent_comment_id string | null · optionalitems[].replies[].text string | null · optionalitems[].text string | null · optionalnext_page integer | null · optionalpage integer | null · optionaltotal integer | null · optional/scrapers/linkedin/profile/detailsProfile Details
Retrieve public LinkedIn data using the documented filters and pagination fields.
detail_level basic | full · optionalDefault: "full".
profiles string[] · requiredMinimum items: 1. Maximum items: 50.
Successful Response
count integer · requireditems object[] · requireditems[].about string | null · optionalitems[].certifications object[] · optionalitems[].certifications[].credential_id string | null · optionalitems[].certifications[].credential_url string | null · optionalitems[].certifications[].expires_at string | null · optionalitems[].certifications[].issued_at string | null · optionalitems[].certifications[].issuer string | null · optionalitems[].certifications[].name string | null · optionalitems[].connection_count integer | null · optionalitems[].courses object[] · optionalitems[].courses[].associated_with string | null · optionalitems[].courses[].name string | null · optionalitems[].courses[].number string | null · optionalitems[].current_positions object[] · optionalitems[].current_positions[].company string | null · optionalitems[].current_positions[].company_url string | null · optionalitems[].current_positions[].date_range object | null · optionalitems[].current_positions[].description string | null · optionalitems[].current_positions[].duration string | null · optionalitems[].current_positions[].employment_type string | null · optionalitems[].current_positions[].location string | null · optionalitems[].current_positions[].skills string[] · optionalitems[].current_positions[].title string | null · optionalitems[].current_positions[].workplace_type string | null · optionalitems[].education object[] · optionalitems[].education[].activities string | null · optionalitems[].education[].date_range object | null · optionalitems[].education[].degree string | null · optionalitems[].education[].description string | null · optionalitems[].education[].field_of_study string | null · optionalitems[].education[].school string | null · optionalitems[].education[].school_url string | null · optionalitems[].experience object[] · optionalitems[].experience[].company string | null · optionalitems[].experience[].company_url string | null · optionalitems[].experience[].date_range object | null · optionalitems[].experience[].description string | null · optionalitems[].experience[].duration string | null · optionalitems[].experience[].employment_type string | null · optionalitems[].experience[].location string | null · optionalitems[].experience[].skills string[] · optionalitems[].experience[].title string | null · optionalitems[].experience[].workplace_type string | null · optionalitems[].first_name string | null · optionalitems[].follower_count integer | null · optionalitems[].headline string | null · optionalitems[].honors object[] · optionalitems[].honors[].description string | null · optionalitems[].honors[].issued_at string | null · optionalitems[].honors[].issuer string | null · optionalitems[].honors[].title string | null · optionalitems[].image object | null · optionalitems[].languages object[] · optionalitems[].languages[].name string · requireditems[].languages[].proficiency string | null · optionalitems[].last_name string | null · optionalitems[].location string | null · optionalitems[].name string | null · optionalitems[].profile_url string | null · optionalitems[].projects object[] · optionalitems[].projects[].date_range object | null · optionalitems[].projects[].description string | null · optionalitems[].projects[].name string | null · optionalitems[].projects[].url string | null · optionalitems[].public_id string | null · optionalitems[].publications object[] · optionalitems[].publications[].description string | null · optionalitems[].publications[].published_at string | null · optionalitems[].publications[].publisher string | null · optionalitems[].publications[].title string | null · optionalitems[].publications[].url string | null · optionalitems[].recommendations object[] · optionalitems[].recommendations[].author object | null · optionalitems[].recommendations[].relationship string | null · optionalitems[].recommendations[].text string | null · optionalitems[].skills object[] · optionalitems[].skills[].endorsements integer | null · optionalitems[].skills[].name string · requireditems[].volunteering object[] · optionalitems[].volunteering[].cause string | null · optionalitems[].volunteering[].date_range object | null · optionalitems[].volunteering[].description string | null · optionalitems[].volunteering[].organization string | null · optionalitems[].volunteering[].role string | null · optionalnext_page integer | null · optionalpage integer | null · optionaltotal integer | null · optional/scrapers/linkedin/profile/postsProfile Posts
Retrieve public LinkedIn data using the documented filters and pagination fields.
comments_limit integer · optionalMinimum: 0. Maximum: 100. Default: 0.
freshness hour | day | week | month | three_months | six_months | year | null · optionalinclude_quotes boolean · optionalDefault: true.
include_reposts boolean · optionalDefault: true.
limit integer · optionalMinimum: 1. Maximum: 1000. Default: 100.
page integer · optionalMinimum: 1. Maximum: 100. Default: 1.
pages integer · optionalMinimum: 1. Maximum: 20. Default: 1.
profiles string[] · requiredMinimum items: 1. Maximum items: 20.
reactions_limit integer · optionalMinimum: 0. Maximum: 100. Default: 0.
since string | null · optionalFormat: date-time.
Successful Response
count integer · requireditems object[] · requireditems[].author object | null · optionalitems[].comments object[] · optionalitems[].comments[].author object | null · optionalitems[].comments[].comment_id string | null · optionalitems[].comments[].comment_url string | null · optionalitems[].comments[].created_at string | null · optionalitems[].comments[].metrics object | null · optionalitems[].comments[].parent_comment_id string | null · optionalitems[].comments[].post object | null · optionalitems[].comments[].replies object[] · optionalitems[].comments[].replies[].author object | null · optionalitems[].comments[].replies[].comment_id string | null · optionalitems[].comments[].replies[].comment_url string | null · optionalitems[].comments[].replies[].created_at string | null · optionalitems[].comments[].replies[].metrics object | null · optionalitems[].comments[].replies[].parent_comment_id string | null · optionalitems[].comments[].replies[].text string | null · optionalitems[].comments[].text string | null · optionalitems[].content_type string | null · optionalitems[].media object[] · optionalitems[].media[].description string | null · optionalitems[].media[].image object | null · optionalitems[].media[].kind string | null · optionalitems[].media[].title string | null · optionalitems[].media[].url string | null · optionalitems[].metrics object | null · optionalitems[].post_id string | null · optionalitems[].post_url string | null · optionalitems[].posted_at string | null · optionalitems[].reactions object[] · optionalitems[].reactions[].author object | null · optionalitems[].reactions[].created_at string | null · optionalitems[].reactions[].kind string | null · optionalitems[].reactions[].post object | null · optionalitems[].reactions[].reaction_id string | null · optionalitems[].text string | null · optionalnext_page integer | null · optionalpage integer | null · optionaltotal integer | null · optional/scrapers/linkedin/profile/reactionsProfile Reactions
Retrieve public LinkedIn data using the documented filters and pagination fields.
freshness hour | day | week | month | three_months | six_months | year | null · optionallimit integer · optionalMinimum: 1. Maximum: 1000. Default: 100.
page integer · optionalMinimum: 1. Maximum: 100. Default: 1.
pages integer · optionalMinimum: 1. Maximum: 20. Default: 1.
profiles string[] · requiredMinimum items: 1. Maximum items: 20.
since string | null · optionalFormat: date-time.
Successful Response
count integer · requireditems object[] · requireditems[].author object | null · optionalitems[].created_at string | null · optionalitems[].kind string | null · optionalitems[].post object | null · optionalitems[].reaction_id string | null · optionalnext_page integer | null · optionalpage integer | null · optionaltotal integer | null · optional/scrapers/sherlock/searchSherlock Search
Discover public username candidates with Sherlock. Matching handles do not establish identity; completeness may be unknown.
Discover candidate accounts for one to five public usernames.
limit integer · optionalMaximum candidates per distinct username. Minimum: 1. Maximum: 100. Default: 20.
usernames string[] · requiredMinimum items: 1. Maximum items: 5.
Successful Response
count integer · requiredMinimum: 0. Maximum: 500.
items object[] · requiredMaximum items: 500.
items[].profile_url string · requireditems[].site string · requireditems[].status candidate · requireditems[].username string · requiredtruncated true | null · requiredTrue when a work or result limit omitted results; null means completeness is unknown. Candidate matches do not establish identity.
/scrapers/tiktok/people/searchTiktok People Search
Collect at most 50 native user candidates with available profile fields. Location texts are appended in caller order as query hints, never enforced city filters. Prefer: respond-async returns promptly; default wait is at most 20 seconds. Cached pages/replays launch no new work.
Idempotency-Key header · optionalRequired for initial collection; cached result_id pages need no key.
prefer header · optionallimit integer · optionalMinimum: 1. Maximum: 50. Default: 20.
locations string[] · optionalUp to five location hints of 1–100 characters, appended in caller order to one native query. Ambiguous names remain text; no city resolution or AND/OR geographic filters are enforced. Maximum items: 5.
page integer · optionalOne-based cached page. Initial collection requires page 1; later pages require result_id and cannot extend the collected window. Minimum: 1. Maximum: 500. Default: 1.
query string · requiredFree-text name, optionally with employer/city. Echoed exactly; matching does not verify identity or enforce filters. Minimum length: 1. Maximum length: 200.
result_id string | null · optionalOwner- and operation-bound immutable collection. Keep the same business request, ordered inputs and limit. Cached pages require no Idempotency-Key and launch no additional work. Pattern: ^rresult_[a-f0-9]{32}$.
Successful Response
collected_count integer · requiredMinimum: 0. Maximum: 500.
collection_limit integer · requiredMinimum: 1. Maximum: 500.
count integer · requiredMinimum: 0. Maximum: 50.
effective_query string · requiredText sent to native account search, including location hints. Instagram commas become spaces to keep one query.
expires_at integer · requiredUnix seconds; the collection expires 24 hours after submission. Polling, replay and cached pages do not renew it.
filters_enforced false · requiredCity and employer restrictions are not enforced. Returned accounts are candidates, never verified identities.
items object[] · requiredMaximum items: 50.
items[].biography string | null · optionalitems[].created_at string | null · optionalitems[].display_name string | null · optionalitems[].followers_count integer | null · optionalMinimum: 0.
items[].following_count integer | null · optionalMinimum: 0.
items[].friends_count integer | null · optionalMinimum: 0.
items[].image_url string | null · optionalitems[].is_organization boolean | null · optionalitems[].is_private boolean | null · optionalitems[].is_seller boolean | null · optionalitems[].is_verified boolean | null · optionalitems[].language string | null · optionalitems[].likes_count integer | null · optionalMinimum: 0.
items[].missing_fields display_name | biography | image_url[] · requiredUnavailable core profile fields. No inferred or purchased enrichment. Maximum items: 3.
items[].posts_count integer | null · optionalMinimum: 0.
items[].profile_id string | null · optionalitems[].profile_url string · requireditems[].public_links object[] | null · optionalitems[].query string · requireditems[].rank integer · requiredAbsolute one-based position after canonical account deduplication, preserving native order. Minimum: 1. Maximum: 50.
items[].status candidate · requireditems[].username string · requireditems[].website_url string | null · optionallimit integer · requiredMinimum: 1. Maximum: 50.
location_handling not_requested | query_hint · requiredlocations string[] · requirednext_page integer | null · requiredMinimum: 2. Maximum: 500.
page integer · requiredMinimum: 1. Maximum: 500.
partial boolean · requiredCollection-wide flag repeated on every cached page: missing candidate core fields, unresolved post targets, or image retention failures/limits can set it, even when absent from this page.
query string · requiredresult_id string · requiredPattern: ^rresult_[a-f0-9]{32}$.
truncated true | null · requiredTrue when collection omitted results; null means completeness is unknown.
Durable native user search; poll the owner-scoped URL.
created_at integer · requirederror string | null · optionalexpires_at integer · requiredjob_id string · requiredoperation string · requiredpoll_url string · requiredRelative Hive URL. Poll with the same bearer; GET returns this job envelope (200), with the completed first page under result. Terminal failed/outcome_unknown jobs never relaunch on replay.
result object | null · optionalservice string · requiredstatus pending | running | completed | failed | outcome_unknown · required/scrapers/tiktok/profile/detailsTiktok Profile Details
Retrieve public TikTok profile details for up to ten usernames or profile URLs.
One to ten TikTok usernames or canonical public @username URLs.
profiles string[] · requiredMinimum items: 1. Maximum items: 10.
Successful Response
count integer · requiredMinimum: 0. Maximum: 10.
items object[] · requiredMaximum items: 10.
items[].biography string | null · optionalitems[].created_at string | null · optionalitems[].display_name string | null · optionalitems[].followers_count integer | null · optionalMinimum: 0.
items[].following_count integer | null · optionalMinimum: 0.
items[].friends_count integer | null · optionalMinimum: 0.
items[].image_url string | null · optionalitems[].input_index integer · requiredMinimum: 0. Maximum: 9.
items[].is_organization boolean | null · optionalitems[].is_private boolean | null · optionalitems[].is_seller boolean | null · optionalitems[].is_verified boolean | null · optionalitems[].language string | null · optionalitems[].likes_count integer | null · optionalMinimum: 0.
items[].posts_count integer | null · optionalMinimum: 0.
items[].profile_id string | null · optionalitems[].profile_url string · requireditems[].public_links object[] | null · optionalitems[].target string · requireditems[].username string · requireditems[].website_url string | null · optionalunresolved object[] · requiredMaximum items: 10.
unresolved[].input_index integer · requiredMinimum: 0. Maximum: 9.
unresolved[].reason not_found | private | unavailable | malformed_data | ambiguous · requiredunresolved[].target string · required/scrapers/tiktok/profile/postsTiktok Profile Posts
Return public videos and ordered slideshow images, with separate cover thumbnails and source authors. Prefer: respond-async submits promptly.
Idempotency-Key header · optionalRequired for initial collection; cached result_id pages need no key.
prefer header · optionalCollect up to 50 public videos or slideshows per unique profile.
limit integer · optionalMinimum: 1. Maximum: 50. Default: 20.
page integer · optionalOne-based cached page. Initial collection requires page 1; later pages require result_id and cannot extend the collected window. Minimum: 1. Maximum: 500. Default: 1.
profiles string[] · requiredMinimum items: 1. Maximum items: 10.
result_id string | null · optionalOwner- and operation-bound immutable collection. Keep the same business request, ordered inputs and limit. Cached pages require no Idempotency-Key and launch no additional work. Pattern: ^rresult_[a-f0-9]{32}$.
retain_media boolean · optionalPreserve up to 20 unique photos/video thumbnails (JPEG/PNG/WebP), 10 MiB and 40 million pixels each, 32 MiB downloaded per job, two at once for up to 30 seconds within the remaining job deadline. No video download. Assets share bearer/global quotas and expire after 24 hours. Cached pages/replay never download again. Default: false.
Successful Response
collected_count integer · requiredMinimum: 0. Maximum: 500.
collection_limit integer · requiredMinimum: 1. Maximum: 500.
count integer · requiredMinimum: 0. Maximum: 50.
expires_at integer · requiredUnix seconds; the collection expires 24 hours after submission. Polling, replay and cached pages do not renew it.
history_complete null · requiredFull platform history is unknown. Pages cover only the cached collection.
history_scope collected_window | recent_public_timeline · optionalFacebook is limited to recent publicly visible timeline posts (typically 25–40); cached pages cannot retrieve older history. Default: "collected_window".
items object[] · requiredMaximum items: 50.
items[].author object · requireditems[].author.display_name string | null · optionalitems[].author.image_url string | null · optionalitems[].author.profile_id string | null · optionalitems[].author.profile_url string · requireditems[].author.username string | null · optionalitems[].comments_count integer | null · optionalMinimum: 0.
items[].context object[] · requiredMaximum items: 2.
items[].context[].author object · requireditems[].context[].author.display_name string | null · optionalitems[].context[].author.image_url string | null · optionalitems[].context[].author.profile_id string | null · optionalitems[].context[].author.profile_url string · requireditems[].context[].author.username string | null · optionalitems[].context[].comments_count integer | null · optionalMinimum: 0.
items[].context[].geotag object | null · requireditems[].context[].kind repost | quote · requireditems[].context[].likes_count integer | null · optionalMinimum: 0.
items[].context[].media object[] · requiredMaximum items: 100.
items[].context[].media[].asset object | null · optionalitems[].context[].media[].bitrate integer | null · optionalMinimum: 0.
items[].context[].media[].group_index integer · requiredZero-based position in the source carousel; variants share a group. Minimum: 0. Maximum: 49.
items[].context[].media[].mime_type string | null · optionalitems[].context[].media[].retention_reason not_requested | video_not_retained | count_limit | job_byte_limit | destination_rejected | source_unavailable | unsupported_format | invalid_image | too_large | quota_exceeded | timeout | download_failed | storage_unavailable | null · optionalDefault: "not_requested".
items[].context[].media[].retention_status retained | skipped | failed · optionalDefault: "skipped".
items[].context[].media[].role original | thumbnail · requireditems[].context[].media[].type image | video · requireditems[].context[].media[].url string · requiredOriginal public source reference; may expire. Separate from the authenticated retained asset URL.
items[].context[].mentions object[] | null · requiredCaption/text mentions, separate from actual tags. Maximum items: 100.
items[].context[].post_id string · requireditems[].context[].quotes_count integer | null · optionalMinimum: 0.
items[].context[].reposts_count integer | null · optionalMinimum: 0.
items[].context[].tagged_users object[] | null · requiredActual source tags; null means unavailable. Maximum items: 100.
items[].context[].text string | null · requireditems[].context[].timestamp string | null · requiredUTC ISO 8601 time; null means unavailable, never inferred epoch zero.
items[].context[].url string · requireditems[].context[].views_count integer | null · optionalMinimum: 0.
items[].geotag object | null · requireditems[].input_index integer · requiredMinimum: 0. Maximum: 9.
items[].is_pinned boolean | null · optionalitems[].is_quote boolean | null · optionalitems[].is_repost boolean | null · optionalitems[].likes_count integer | null · optionalMinimum: 0.
items[].media object[] · requiredMaximum items: 100.
items[].media[].asset object | null · optionalitems[].media[].bitrate integer | null · optionalMinimum: 0.
items[].media[].group_index integer · requiredZero-based position in the source carousel; variants share a group. Minimum: 0. Maximum: 49.
items[].media[].mime_type string | null · optionalitems[].media[].retention_reason not_requested | video_not_retained | count_limit | job_byte_limit | destination_rejected | source_unavailable | unsupported_format | invalid_image | too_large | quota_exceeded | timeout | download_failed | storage_unavailable | null · optionalDefault: "not_requested".
items[].media[].retention_status retained | skipped | failed · optionalDefault: "skipped".
items[].media[].role original | thumbnail · requireditems[].media[].type image | video · requireditems[].media[].url string · requiredOriginal public source reference; may expire. Separate from the authenticated retained asset URL.
items[].mentions object[] | null · requiredCaption/text mentions, separate from actual tags. Maximum items: 100.
items[].post_id string · requireditems[].quotes_count integer | null · optionalMinimum: 0.
items[].reposts_count integer | null · optionalMinimum: 0.
items[].tagged_users object[] | null · requiredActual source tags; null means unavailable. Maximum items: 100.
items[].target string · requireditems[].text string | null · requireditems[].timestamp string | null · requiredUTC ISO 8601 time; null means unavailable, never inferred epoch zero.
items[].url string · requireditems[].views_count integer | null · optionalMinimum: 0.
limit integer · requiredMinimum: 1. Maximum: 50.
next_page integer | null · requiredMinimum: 2. Maximum: 500.
page integer · requiredMinimum: 1. Maximum: 500.
partial boolean · requiredCollection-wide flag repeated on every cached page: missing candidate core fields, unresolved post targets, or image retention failures/limits can set it, even when absent from this page.
per_target_limit integer · requiredMinimum: 1. Maximum: 50.
result_id string · requiredPattern: ^rresult_[a-f0-9]{32}$.
targets object[] · requiredMaximum items: 10.
targets[].collected_count integer · requiredMinimum: 0. Maximum: 50.
targets[].input_index integer · requiredMinimum: 0. Maximum: 9.
targets[].reason not_found | private | unavailable | malformed_data | ambiguous | null · requiredtargets[].status resolved | unresolved · requiredtargets[].target string · requiredtruncated true | null · requiredTrue when collection omitted results; null means completeness is unknown.
unresolved object[] · requiredMaximum items: 10.
unresolved[].input_index integer · requiredMinimum: 0. Maximum: 9.
unresolved[].reason not_found | private | unavailable | malformed_data | ambiguous · requiredunresolved[].target string · requiredDurable job; poll the returned owner-scoped URL.
created_at integer · requirederror string | null · optionalexpires_at integer · requiredjob_id string · requiredoperation string · requiredpoll_url string · requiredRelative Hive URL. Poll with the same bearer; GET returns this job envelope (200), with the completed first page under result. Terminal failed/outcome_unknown jobs never relaunch on replay.
result object | null · optionalservice string · requiredstatus pending | running | completed | failed | outcome_unknown · required/scrapers/x/people/searchX People Search
Collect at most 50 native account candidates with available profile fields. Locations are query hints, not filters. Prefer: respond-async returns promptly; default wait is at most 20 seconds. Cached pages/replays launch no new work.
Idempotency-Key header · optionalRequired for initial collection; cached result_id pages need no key.
prefer header · optionallimit integer · optionalMinimum: 1. Maximum: 50. Default: 20.
locations string[] · optionalUp to five location hints of 1–100 characters, appended in caller order to one native query. Ambiguous names remain text; no city resolution or AND/OR geographic filters are enforced. Maximum items: 5.
page integer · optionalOne-based cached page. Initial collection requires page 1; later pages require result_id and cannot extend the collected window. Minimum: 1. Maximum: 500. Default: 1.
query string · requiredFree-text name, optionally with employer/city. Echoed exactly; matching does not verify identity or enforce filters. Minimum length: 1. Maximum length: 200.
result_id string | null · optionalOwner- and operation-bound immutable collection. Keep the same business request, ordered inputs and limit. Cached pages require no Idempotency-Key and launch no additional work. Pattern: ^rresult_[a-f0-9]{32}$.
Successful Response
collected_count integer · requiredMinimum: 0. Maximum: 500.
collection_limit integer · requiredMinimum: 1. Maximum: 500.
count integer · requiredMinimum: 0. Maximum: 50.
effective_query string · requiredText sent to native account search, including location hints. Instagram commas become spaces to keep one query.
expires_at integer · requiredUnix seconds; the collection expires 24 hours after submission. Polling, replay and cached pages do not renew it.
filters_enforced false · requiredCity and employer restrictions are not enforced. Returned accounts are candidates, never verified identities.
items object[] · requiredMaximum items: 50.
items[].biography string | null · optionalitems[].cover_image_url string | null · optionalitems[].created_at string | null · optionalAccount creation timestamp in ISO 8601 UTC.
items[].display_name string | null · optionalitems[].followers_count integer | null · optionalMinimum: 0.
items[].following_count integer | null · optionalMinimum: 0.
items[].image_url string | null · optionalitems[].is_blue_verified boolean | null · optionalitems[].is_private boolean | null · optionalitems[].is_verified boolean | null · optionalVerification observation; absent or null when the source supplies only an ambiguous untyped flag.
items[].likes_count integer | null · optionalMinimum: 0.
items[].listed_count integer | null · optionalMinimum: 0.
items[].location string | null · optionalitems[].media_count integer | null · optionalMinimum: 0.
items[].missing_fields display_name | biography | image_url[] · requiredUnavailable core profile fields. No inferred or purchased enrichment. Maximum items: 3.
items[].posts_count integer | null · optionalMinimum: 0.
items[].profile_id string | null · optionalitems[].profile_url string · requireditems[].public_links object[] | null · optionalitems[].query string · requireditems[].rank integer · requiredAbsolute one-based position after canonical account deduplication, preserving native order. Minimum: 1. Maximum: 50.
items[].status candidate · requireditems[].username string · requireditems[].verification_type string | null · optionalitems[].website_url string | null · optionallimit integer · requiredMinimum: 1. Maximum: 50.
location_handling not_requested | query_hint · requiredlocations string[] · requirednext_page integer | null · requiredMinimum: 2. Maximum: 500.
page integer · requiredMinimum: 1. Maximum: 500.
partial boolean · requiredCollection-wide flag repeated on every cached page: missing candidate core fields, unresolved post targets, or image retention failures/limits can set it, even when absent from this page.
query string · requiredresult_id string · requiredPattern: ^rresult_[a-f0-9]{32}$.
truncated true | null · requiredTrue when collection omitted results; null means completeness is unknown.
Durable native account search; poll the owner-scoped URL.
created_at integer · requirederror string | null · optionalexpires_at integer · requiredjob_id string · requiredoperation string · requiredpoll_url string · requiredRelative Hive URL. Poll with the same bearer; GET returns this job envelope (200), with the completed first page under result. Terminal failed/outcome_unknown jobs never relaunch on replay.
result object | null · optionalservice string · requiredstatus pending | running | completed | failed | outcome_unknown · required/scrapers/x/profile/detailsX Profile Details
Retrieve public X profile details for up to ten handles or profile URLs.
One to ten X handles or canonical x.com or twitter.com profile URLs.
profiles string[] · requiredMinimum items: 1. Maximum items: 10.
Successful Response
count integer · requiredMinimum: 0. Maximum: 10.
items object[] · requiredMaximum items: 10.
items[].biography string | null · optionalitems[].cover_image_url string | null · optionalitems[].created_at string | null · optionalAccount creation timestamp in ISO 8601 UTC.
items[].display_name string | null · optionalitems[].followers_count integer | null · optionalMinimum: 0.
items[].following_count integer | null · optionalMinimum: 0.
items[].image_url string | null · optionalitems[].input_index integer · requiredMinimum: 0. Maximum: 9.
items[].is_blue_verified boolean | null · optionalitems[].is_private boolean | null · optionalitems[].is_verified boolean | null · optionalVerification observation; absent or null when the source supplies only an ambiguous untyped flag.
items[].likes_count integer | null · optionalMinimum: 0.
items[].listed_count integer | null · optionalMinimum: 0.
items[].location string | null · optionalitems[].media_count integer | null · optionalMinimum: 0.
items[].posts_count integer | null · optionalMinimum: 0.
items[].profile_id string | null · optionalitems[].profile_url string · requireditems[].public_links object[] | null · optionalitems[].target string · requireditems[].username string · requireditems[].verification_type string | null · optionalitems[].website_url string | null · optionalunresolved object[] · requiredMaximum items: 10.
unresolved[].input_index integer · requiredMinimum: 0. Maximum: 9.
unresolved[].reason not_found | private | unavailable | malformed_data | ambiguous · requiredunresolved[].target string · required/scrapers/x/profile/postsX Profile Posts
Return bounded X posts with source authors, ordered media and quote/repost context. Prefer: respond-async submits promptly.
Idempotency-Key header · optionalRequired for initial collection; cached result_id pages need no key.
prefer header · optionalCollect up to 50 posts per unique profile; page the stable cached window.
limit integer · optionalMinimum: 1. Maximum: 50. Default: 20.
page integer · optionalOne-based cached page. Initial collection requires page 1; later pages require result_id and cannot extend the collected window. Minimum: 1. Maximum: 500. Default: 1.
profiles string[] · requiredMinimum items: 1. Maximum items: 10.
result_id string | null · optionalOwner- and operation-bound immutable collection. Keep the same business request, ordered inputs and limit. Cached pages require no Idempotency-Key and launch no additional work. Pattern: ^rresult_[a-f0-9]{32}$.
retain_media boolean · optionalPreserve up to 20 unique photos/video thumbnails (JPEG/PNG/WebP), 10 MiB and 40 million pixels each, 32 MiB downloaded per job, two at once for up to 30 seconds within the remaining job deadline. No video download. Assets share bearer/global quotas and expire after 24 hours. Cached pages/replay never download again. Default: false.
Successful Response
collected_count integer · requiredMinimum: 0. Maximum: 500.
collection_limit integer · requiredMinimum: 1. Maximum: 500.
count integer · requiredMinimum: 0. Maximum: 50.
expires_at integer · requiredUnix seconds; the collection expires 24 hours after submission. Polling, replay and cached pages do not renew it.
history_complete null · requiredFull platform history is unknown. Pages cover only the cached collection.
history_scope collected_window | recent_public_timeline · optionalFacebook is limited to recent publicly visible timeline posts (typically 25–40); cached pages cannot retrieve older history. Default: "collected_window".
items object[] · requiredMaximum items: 50.
items[].author object · requireditems[].author.display_name string | null · optionalitems[].author.image_url string | null · optionalitems[].author.profile_id string | null · optionalitems[].author.profile_url string · requireditems[].author.username string | null · optionalitems[].comments_count integer | null · optionalMinimum: 0.
items[].context object[] · requiredMaximum items: 2.
items[].context[].author object · requireditems[].context[].author.display_name string | null · optionalitems[].context[].author.image_url string | null · optionalitems[].context[].author.profile_id string | null · optionalitems[].context[].author.profile_url string · requireditems[].context[].author.username string | null · optionalitems[].context[].comments_count integer | null · optionalMinimum: 0.
items[].context[].geotag object | null · requireditems[].context[].kind repost | quote · requireditems[].context[].likes_count integer | null · optionalMinimum: 0.
items[].context[].media object[] · requiredMaximum items: 100.
items[].context[].media[].asset object | null · optionalitems[].context[].media[].bitrate integer | null · optionalMinimum: 0.
items[].context[].media[].group_index integer · requiredZero-based position in the source carousel; variants share a group. Minimum: 0. Maximum: 49.
items[].context[].media[].mime_type string | null · optionalitems[].context[].media[].retention_reason not_requested | video_not_retained | count_limit | job_byte_limit | destination_rejected | source_unavailable | unsupported_format | invalid_image | too_large | quota_exceeded | timeout | download_failed | storage_unavailable | null · optionalDefault: "not_requested".
items[].context[].media[].retention_status retained | skipped | failed · optionalDefault: "skipped".
items[].context[].media[].role original | thumbnail · requireditems[].context[].media[].type image | video · requireditems[].context[].media[].url string · requiredOriginal public source reference; may expire. Separate from the authenticated retained asset URL.
items[].context[].mentions object[] | null · requiredCaption/text mentions, separate from actual tags. Maximum items: 100.
items[].context[].post_id string · requireditems[].context[].quotes_count integer | null · optionalMinimum: 0.
items[].context[].reposts_count integer | null · optionalMinimum: 0.
items[].context[].tagged_users object[] | null · requiredActual source tags; null means unavailable. Maximum items: 100.
items[].context[].text string | null · requireditems[].context[].timestamp string | null · requiredUTC ISO 8601 time; null means unavailable, never inferred epoch zero.
items[].context[].url string · requireditems[].context[].views_count integer | null · optionalMinimum: 0.
items[].geotag object | null · requireditems[].input_index integer · requiredMinimum: 0. Maximum: 9.
items[].is_pinned boolean | null · optionalitems[].is_quote boolean | null · optionalitems[].is_repost boolean | null · optionalitems[].likes_count integer | null · optionalMinimum: 0.
items[].media object[] · requiredMaximum items: 100.
items[].media[].asset object | null · optionalitems[].media[].bitrate integer | null · optionalMinimum: 0.
items[].media[].group_index integer · requiredZero-based position in the source carousel; variants share a group. Minimum: 0. Maximum: 49.
items[].media[].mime_type string | null · optionalitems[].media[].retention_reason not_requested | video_not_retained | count_limit | job_byte_limit | destination_rejected | source_unavailable | unsupported_format | invalid_image | too_large | quota_exceeded | timeout | download_failed | storage_unavailable | null · optionalDefault: "not_requested".
items[].media[].retention_status retained | skipped | failed · optionalDefault: "skipped".
items[].media[].role original | thumbnail · requireditems[].media[].type image | video · requireditems[].media[].url string · requiredOriginal public source reference; may expire. Separate from the authenticated retained asset URL.
items[].mentions object[] | null · requiredCaption/text mentions, separate from actual tags. Maximum items: 100.
items[].post_id string · requireditems[].quotes_count integer | null · optionalMinimum: 0.
items[].reposts_count integer | null · optionalMinimum: 0.
items[].tagged_users object[] | null · requiredActual source tags; null means unavailable. Maximum items: 100.
items[].target string · requireditems[].text string | null · requireditems[].timestamp string | null · requiredUTC ISO 8601 time; null means unavailable, never inferred epoch zero.
items[].url string · requireditems[].views_count integer | null · optionalMinimum: 0.
limit integer · requiredMinimum: 1. Maximum: 50.
next_page integer | null · requiredMinimum: 2. Maximum: 500.
page integer · requiredMinimum: 1. Maximum: 500.
partial boolean · requiredCollection-wide flag repeated on every cached page: missing candidate core fields, unresolved post targets, or image retention failures/limits can set it, even when absent from this page.
per_target_limit integer · requiredMinimum: 1. Maximum: 50.
result_id string · requiredPattern: ^rresult_[a-f0-9]{32}$.
targets object[] · requiredMaximum items: 10.
targets[].collected_count integer · requiredMinimum: 0. Maximum: 50.
targets[].input_index integer · requiredMinimum: 0. Maximum: 9.
targets[].reason not_found | private | unavailable | malformed_data | ambiguous | null · requiredtargets[].status resolved | unresolved · requiredtargets[].target string · requiredtruncated true | null · requiredTrue when collection omitted results; null means completeness is unknown.
unresolved object[] · requiredMaximum items: 10.
unresolved[].input_index integer · requiredMinimum: 0. Maximum: 9.
unresolved[].reason not_found | private | unavailable | malformed_data | ambiguous · requiredunresolved[].target string · requiredDurable job; poll the returned owner-scoped URL.
created_at integer · requirederror string | null · optionalexpires_at integer · requiredjob_id string · requiredoperation string · requiredpoll_url string · requiredRelative Hive URL. Poll with the same bearer; GET returns this job envelope (200), with the completed first page under result. Terminal failed/outcome_unknown jobs never relaunch on replay.
result object | null · optionalservice string · requiredstatus pending | running | completed | failed | outcome_unknown · required/statuszRead service availability
Success