Browsable Browsable Docs

Indeed job details

Fetch full details for a single Indeed job posting — title, company, location, salary, employment type, full description, benefits, posted date, and apply URL. Pass either a job URL or a job key.

POST /v1/indeed/job

Request Parameters

Name In Type Required Description
domain body string No Indeed regional domain (default www.indeed.com). Only used when jobKey is provided.
jobKey body string No Indeed job key (e.g. `a61c6e343c845e92`) — the `jobKey` field from `indeed/search`. Use instead of url.
url body string No Full Indeed job URL — typically the `link` from a prior `indeed/search` response.

Response Structure

Async kickoff response

Polled run result response

Sync response

Declared output schema

Code Examples

Async + polling

RUN=$(curl -s -X POST "https://api.browsable.app/v1/indeed/job" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"domain":"sample","jobKey":"sample","url":"https://example.com/item-1"}')
RUN_ID=$(echo "$RUN" | jq -r '.run_id')
POLL_DELAY=3
while true; do
RESULT=$(curl -s -H "Authorization: Bearer YOUR_API_KEY" "https://api.browsable.app/v1/runs/$RUN_ID")
STATUS=$(echo "$RESULT" | jq -r '.run_status')
if [[ "$STATUS" =~ ^(succeeded|failed|errored|cancelled|canceled|expired)$ ]]; then
echo "$RESULT"
break
fi
sleep "$(awk "BEGIN { print $POLL_DELAY * (0.9 + ($RANDOM % 21) / 100) }")"
POLL_DELAY=$((POLL_DELAY < 30 ? POLL_DELAY * 2 : 30))
[ "$POLL_DELAY" -gt 30 ] && POLL_DELAY=30
done

Sync

curl -X POST "https://api.browsable.app/v1/indeed/job" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"domain":"sample","jobKey":"sample","url":"https://example.com/item-1","_run":{"async":false}}'