100 free credits. No credit card required.Start building
Logo
Jobs logo
100 free credits. No credit card required

Jobs Indeed API

Returns one Indeed job listing: title, company, location, description, and apply URL.

GET /v1/jobs/indeed

Last updated November 2026Maintained by the SocialCrawl team

When to use the Jobs Indeed API

Use it after indeed/search, passing a job id from that list to read the full description.

From the API reference

Returns one Indeed job: title, company, location, description, and apply URL. Use an id from GET /v1/jobs/indeed/search.

Searching 69 platforms in parallel

·TikTok logoTikTok·Instagram logoInstagram·YouTube logoYouTube·Facebook logoFacebook·X logoX·LinkedIn logoLinkedIn·Reddit logoReddit·Threads logoThreads·Pinterest logoPinterest·Twitch logoTwitch·Truth Social logoTruth Social·Snapchat logoSnapchat·Kick logoKick·Bluesky logoBluesky·Kwai logoKwai·Rumble logoRumble·Spotify logoSpotify·Apple Music logoApple Music·TikTok Shop logoTikTok Shop·Amazon Shop logoAmazon Shop·Google Shopping logoGoogle Shopping·Trustpilot logoTrustpilot·TripAdvisor logoTripAdvisor·Yelp logoYelp·Linktree logoLinktree·Komi logoKomi·Pillar logoPillar·lnk.bio logolnk.bio·Facebook Ads logoFacebook Ads·Google Ads logoGoogle Ads·LinkedIn Ads logoLinkedIn Ads·Google Search logoGoogle Search·Google News logoGoogle News·Finance logoFinance·Polymarket logoPolymarket·Tavily logoTavily·Hacker News logoHacker News·GitHub logoGitHub·Perplexity logoPerplexity·Naver logoNaver·Utility logoUtility·Universal Search logoUniversal Search
·TikTok logoTikTok·Instagram logoInstagram·YouTube logoYouTube·Facebook logoFacebook·X logoX·LinkedIn logoLinkedIn·Reddit logoReddit·Threads logoThreads·Pinterest logoPinterest·Twitch logoTwitch·Truth Social logoTruth Social·Snapchat logoSnapchat·Kick logoKick·Bluesky logoBluesky·Kwai logoKwai·Rumble logoRumble·Spotify logoSpotify·Apple Music logoApple Music·TikTok Shop logoTikTok Shop·Amazon Shop logoAmazon Shop·Google Shopping logoGoogle Shopping·Trustpilot logoTrustpilot·TripAdvisor logoTripAdvisor·Yelp logoYelp·Linktree logoLinktree·Komi logoKomi·Pillar logoPillar·lnk.bio logolnk.bio·Facebook Ads logoFacebook Ads·Google Ads logoGoogle Ads·LinkedIn Ads logoLinkedIn Ads·Google Search logoGoogle Search·Google News logoGoogle News·Finance logoFinance·Polymarket logoPolymarket·Tavily logoTavily·Hacker News logoHacker News·GitHub logoGitHub·Perplexity logoPerplexity·Naver logoNaver·Utility logoUtility·Universal Search logoUniversal Search
·TikTok logoTikTok·Instagram logoInstagram·YouTube logoYouTube·Facebook logoFacebook·X logoX·LinkedIn logoLinkedIn·Reddit logoReddit·Threads logoThreads·Pinterest logoPinterest·Twitch logoTwitch·Truth Social logoTruth Social·Snapchat logoSnapchat·Kick logoKick·Bluesky logoBluesky·Kwai logoKwai·Rumble logoRumble·Spotify logoSpotify·Apple Music logoApple Music·TikTok Shop logoTikTok Shop·Amazon Shop logoAmazon Shop·Google Shopping logoGoogle Shopping·Trustpilot logoTrustpilot·TripAdvisor logoTripAdvisor·Yelp logoYelp·Linktree logoLinktree·Komi logoKomi·Pillar logoPillar·lnk.bio logolnk.bio·Facebook Ads logoFacebook Ads·Google Ads logoGoogle Ads·LinkedIn Ads logoLinkedIn Ads·Google Search logoGoogle Search·Google News logoGoogle News·Finance logoFinance·Polymarket logoPolymarket·Tavily logoTavily·Hacker News logoHacker News·GitHub logoGitHub·Perplexity logoPerplexity·Naver logoNaver·Utility logoUtility·Universal Search logoUniversal Search
·TikTok logoTikTok·Instagram logoInstagram·YouTube logoYouTube·Facebook logoFacebook·X logoX·LinkedIn logoLinkedIn·Reddit logoReddit·Threads logoThreads·Pinterest logoPinterest·Twitch logoTwitch·Truth Social logoTruth Social·Snapchat logoSnapchat·Kick logoKick·Bluesky logoBluesky·Kwai logoKwai·Rumble logoRumble·Spotify logoSpotify·Apple Music logoApple Music·TikTok Shop logoTikTok Shop·Amazon Shop logoAmazon Shop·Google Shopping logoGoogle Shopping·Trustpilot logoTrustpilot·TripAdvisor logoTripAdvisor·Yelp logoYelp·Linktree logoLinktree·Komi logoKomi·Pillar logoPillar·lnk.bio logolnk.bio·Facebook Ads logoFacebook Ads·Google Ads logoGoogle Ads·LinkedIn Ads logoLinkedIn Ads·Google Search logoGoogle Search·Google News logoGoogle News·Finance logoFinance·Polymarket logoPolymarket·Tavily logoTavily·Hacker News logoHacker News·GitHub logoGitHub·Perplexity logoPerplexity·Naver logoNaver·Utility logoUtility·Universal Search logoUniversal Search
Jobs API

What can you do with the Indeed API?

The Indeed endpoint gives you structured Jobs data with computed fields in a single request. No scraping infrastructure to build or maintain.

Example Request

# GET /v1/jobs/indeed: 5 credits per call. Cache hits are free and failed calls are refunded.
# Check the price first for 0 credits: add dry_run=1 to the query. Nothing is fetched or charged.
# --max-time 60: the API's own time limit for this endpoint.
# --retry 3: retries timeouts, 429 and 5xx, honoring Retry-After.
# -o response.json keeps only the final attempt's body.
# One Idempotency-Key per request, reused on every retry, so a retried call is never charged twice.
IDEMPOTENCY_KEY=$(od -An -N16 -tx1 /dev/urandom | tr -d ' \n')
curl -sS --max-time 60 --retry 3 -o response.json \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Idempotency-Key: $IDEMPOTENCY_KEY" \
  "https://www.socialcrawl.dev/v1/jobs/indeed?id=aWQ9NWExYzEwM2YzOTEzODljNDtjYz11cw%3D%3D" && cat response.json
# GET /v1/jobs/indeed: 5 credits per call. Cache hits are free and failed calls are refunded.
# Check the price first for 0 credits: add dry_run=1 to the query. Nothing is fetched or charged.
import os
import random
import time
import uuid

import requests

API_KEY = os.environ.get("SOCIALCRAWL_API_KEY", "YOUR_API_KEY")
TIMEOUT_S = 60  # the API's own time limit for this endpoint.
MAX_RETRIES = 3
URL = "https://www.socialcrawl.dev/v1/jobs/indeed"


def backoff(attempt):
    # Exponential backoff with jitter: about 1 s, 2 s, then 4 s.
    return 2 ** attempt * (0.5 + random.random() / 2)


def socialcrawl(params):
    # One Idempotency-Key per request, reused on every retry, so a retried call is never charged twice.
    idempotency_key = str(uuid.uuid4())
    for attempt in range(MAX_RETRIES + 1):
        try:
            res = requests.get(
                URL,
                params=params,
                headers={"x-api-key": API_KEY, "Idempotency-Key": idempotency_key},
                timeout=TIMEOUT_S,
            )
            body = res.json()
        except (requests.RequestException, ValueError):
            # A timeout, a dropped connection or a non-JSON gateway page: retry with the same key.
            if attempt == MAX_RETRIES:
                raise
            time.sleep(backoff(attempt))
            continue
        if body["success"]:
            return body
        error = body["error"]
        # Branch on error["type"], never on the message text.
        if error["type"] == "RESOURCE_NOT_FOUND":
            return None  # refunded: nothing to read
        retry_after = res.headers.get("Retry-After")
        # SERVICE_UNAVAILABLE without Retry-After is a withdrawn endpoint: permanent.
        permanent = error["type"] == "SERVICE_UNAVAILABLE" and retry_after is None
        if not error.get("retryable") or permanent or attempt == MAX_RETRIES:
            raise RuntimeError(f"{error['type']}: {error['message']} (request_id {body['request_id']})")
        # Retry-After (seconds) wins; otherwise back off.
        time.sleep(float(retry_after) if retry_after else backoff(attempt))


params = {
    "id": "aWQ9NWExYzEwM2YzOTEzODljNDtjYz11cw==",
}
body = socialcrawl(params)
if body is not None:
    print(body["data"])
// GET /v1/jobs/indeed: 5 credits per call. Cache hits are free and failed calls are refunded.
// Check the price first for 0 credits: add dry_run=1 to the query. Nothing is fetched or charged.
const API_KEY = process.env.SOCIALCRAWL_API_KEY ?? "YOUR_API_KEY";
const TIMEOUT_MS = 60_000; // the API's own time limit for this endpoint.
const MAX_RETRIES = 3;

type Page = { next_cursor: string | null; has_more: boolean };
type SocialCrawlResponse =
  | { success: true; data: any; pagination?: Page; credits_used: number; request_id: string }
  | { success: false; error: { type: string; message: string; retryable: boolean }; request_id: string };

const sleep = (ms: number) => new Promise((resolve) => setTimeout(resolve, ms));
// Exponential backoff with jitter: about 1 s, 2 s, then 4 s.
const backoffMs = (attempt: number) => 2 ** attempt * 1000 * (0.5 + Math.random() / 2);

async function socialcrawl(url: URL) {
  // One Idempotency-Key per request, reused on every retry, so a retried call is never charged twice.
  const idempotencyKey = crypto.randomUUID();
  for (let attempt = 0; ; attempt++) {
    let res: Response;
    let body: SocialCrawlResponse;
    try {
      res = await fetch(url, {
        headers: {
          "x-api-key": API_KEY,
          "Idempotency-Key": idempotencyKey,
        },
        signal: AbortSignal.timeout(TIMEOUT_MS),
      });
      body = (await res.json()) as SocialCrawlResponse;
    } catch (error) {
      // A timeout, a dropped connection or a non-JSON gateway page: retry with the same key.
      if (attempt >= MAX_RETRIES) throw error;
      await sleep(backoffMs(attempt));
      continue;
    }
    if (body.success) return body;
    // Branch on error.type, never on the message text.
    if (body.error.type === "RESOURCE_NOT_FOUND") return null; // refunded: nothing to read
    const retryAfter = res.headers.get("Retry-After");
    // SERVICE_UNAVAILABLE without Retry-After is a withdrawn endpoint: permanent.
    const permanent = body.error.type === "SERVICE_UNAVAILABLE" && retryAfter === null;
    if (!body.error.retryable || permanent || attempt >= MAX_RETRIES) {
      throw new Error(`${body.error.type}: ${body.error.message} (request_id ${body.request_id})`);
    }
    // Retry-After (seconds) wins; otherwise back off.
    await sleep(retryAfter ? Number(retryAfter) * 1000 : backoffMs(attempt));
  }
}

const url = new URL("https://www.socialcrawl.dev/v1/jobs/indeed");
url.searchParams.set("id", "aWQ9NWExYzEwM2YzOTEzODljNDtjYz11cw==");

const body = await socialcrawl(url);
if (body) console.log(body.data);

Parameters

ParameterRequiredDescription
idYesIndeed job id from indeed/search.
Example Response

What does the Jobs Indeed API return?

Every response follows one unified schema. Here is a real, unmodified response body, so you can see the exact fields you get back before spending a credit.

Example response
{
  "success": true,
  "platform": "jobs",
  "endpoint": "/v1/jobs/indeed",
  "data": {
    "job": {
      "id": "aWQ9NWExYzEwM2YzOTEzODljNDtjYz11cw==",
      "title": "Software Engineer, Security",
      "url": "https://jobs.ashbyhq.com/harvey/d2624850-8dd4-4eb4-b5dc-f386b715a26f",
      "company": {
        "id": null,
        "name": "HARVEY",
        "url": null,
        "verified": null
      },
      "location": "San Francisco, CA",
      "listed_at": "2026-09-01T05:00:00.000Z",
      "easy_apply": null,
      "remote": null,
      "employment_type": null,
      "experience_level": null,
      "description": "Location\n\nSan Francisco\n\nEmployment Type\n\nFull time\n\nDepartment\n\nSecurity\n\nCompensation\n$161K – $245K • Offers Equity • Offers Bonus\n\nAdditionally, this role is eligible to participate in our equity plan and benefits program. Benefits include, but not limited to: Comprehensive health, dental and vision coverage, retirement benefits (401k match up to 4%), and flexible PTO.\nWhy Harvey\n\nAt Harvey, we’re transforming how legal and professional services operate. By combining frontier agentic AI, an enterprise-grade platform, and deep domain expertise, we’re reshaping how critical knowledge work gets done for decades to come.\n\nThis is a rare chance to help build a generational company at a true inflection point. We have strong product-market fit and world-class investor support. We’re scaling fast and defining a new category in real time. The work is ambitious, the bar is high, and the opportunity for growth — personal, professional, and financial — is unmatched.\n\nOur team moves fast, takes ownership, and is deeply committed to the mission — operating with intensity, staying close to our customers, and pushing each other for excellence. We live by three values: Decisiveness, Simplicity, and Job's Not Finished. We act quickly on clear judgment over perfect information, we believe simplicity is what scales, and we're never satisfied with where we are. If you want to do the best work of your career alongside people who share that drive, we'd love to build with you.\n\nAt Harvey, the future of professional services is being written today — and we’re just getting started.\n\nRole Overview\n\nAs a Software Engineer on the Security Engineering team at Harvey, you'll build and operate foundational security services for both our customer-facing product and the internal systems our workforce depends on: identity and access management, secrets and privileged access, agent sandboxes, and tooling that makes the secure path the fast path. You'll turn security needs into production systems and own the reliability and security of what you build, working closely with engineers and partner teams along the way. Attackers increasingly operate at agent speed, so we’re building defenses that can keep pace.\n\nSecurity at Harvey is an engineering discipline, not a gatekeeper function. We build platforms and libraries that make it hard for engineers to get security wrong, and we measure ourselves on adoption and outcomes rather than tickets filed. Our program is informed by risk: we invest where the actual exposure to our most sensitive data and resources is greatest, rather than where a framework tells us to.\n\nWhat You'll Do\n\nBuild and operate Harvey’s core identity and access services across customer-facing product, workforce, and infrastructure systems, including authentication, authorization, access governance, secrets, and privileged access\n\nEvolve how Harvey customers set up and manage their environments, making security-critical configuration—from identity and access to policies and integrations—delightful to use and secure by default\n\nBuild identity controls, sandboxes, and safety harnesses that let services and AI agents operate with least privilege, constrained actions, clear auditability, and effective monitoring\n\nCreate secure-by-default libraries, paved-road abstractions, self-service tooling, and agentic workflows that automate security triage, remediation, and evidence collection\n\nTake security systems from design through production, accounting for trust boundaries, attacker paths, and operational failure modes while owning their reliability and security\n\nShare an on-call rotation for Harvey’s mission-critical security services, contribute to incident response, and raise the engineering bar through design reviews, code reviews, and clear documentation\n\nWhat You Have\n\n2+ years of software engineering experience, including experience shipping and operating production services\n\nExperience building or contributing to security infrastructure such as identity and access management, authentication and authorization, secrets management, or privileged access\n\nStrong programming, debugging, testing, and problem-solving skills, with the ability to work across unfamiliar systems and domains\n\nExperience with cloud infrastructure such as Microsoft Azure, Google Cloud Platform, or Amazon Web Services and familiarity with modern distributed-system patterns\n\nA track record of translating security requirements into maintainable, automated systems\n\nExperience using agentic coding tools and creating workflows that automate repetitive security work, with the judgment to review their output critically and measure whether they improve security outcomes\n\nClear communication and collaboration skills, including the ability to explain technical risks, decisions, and tradeoffs to engineering partners\n\nWorking knowledge of common vulnerability classes and the ability to reason about how a system fails under an attacker, not just under load\n\nNice to Have\n\nExperience building security infrastructure at a fast-growing company\n\nExperience with SCIM; OpenID Connect (OIDC); Security Assertion Markup Language (SAML); policy engines such as Open Policy Agent (OPA), Cedar, or Zanzibar-style systems; or hardware-backed credentials\n\nExperience securing agentic or AI-powered systems, especially systems that act on behalf of users against sensitive data\n\nExperience working in a highly regulated enterprise environment\n\nCompensation\n\n$161,000 - $245,000 USD\n\nDepending on your location, an Applicant Privacy Notice may apply to you. You can find all of our Applicant Privacy Notices [here].\n\n#LI-NP1\n\nHarvey is an equal opportunity employer and does not discriminate on the basis of race, gender, sexual orientation, gender identity/expression, national origin, disability, age, genetic information, veteran status, marital status, pregnancy or related condition, or any other basis protected by law.\n\nWe are committed to providing reasonable accommodations to applicants with disabilities, and requests can be made by emailing accommodations@harvey.ai",
      "apply_url": "https://jobs.ashbyhq.com/harvey/d2624850-8dd4-4eb4-b5dc-f386b715a26f",
      "ext": {
        "applicant_count": null,
        "job_provider": null,
        "salary_min": null,
        "salary_max": null,
        "salary_currency": null,
        "country_code": "US",
        "linkedin_company_name": null,
        "industries": null,
        "job_function": null,
        "accepting_applications": null,
        "board": "indeed"
      }
    }
  },
  "credits_used": 5,
  "request_id": "req_example000000",
  "cached": false,
  "credits_remaining": 9999,
  "redacted": true
}

Live sample illustrating the unified response shape. Field values reflect the record you query.

API Details

How does the Jobs Indeed API work?

Send a GET request with your API key and get back clean, structured JSON in our unified schema. Supported computed fields are populated when the source provides the required inputs.

Method

GET

Response

JSON

Why SocialCrawl

Why use SocialCrawl for Jobs Indeed data?

We handle the complexity of Jobs data extraction so you can focus on building. Unified schema, AI enrichment, and zero platform logic in your code.

Developer First

How do you scrape social media data in seconds?

The fastest social media scraping API for developers. Scrape profiles, posts, comments, and analytics from 69 platforms covering 10B+ monthly active users.

One schema, every platform

Query 69 platforms with identical response structures. Write your integration once.

Computed fields, not just scraped

When an endpoint supports these metrics and the source provides the required inputs, the normalized record includes engagement_rate, estimated_reach, content_category, and language. Ready to use.

See your data before you code

Visual Data Explorer. Paste any URL, get rich result cards, sortable tables, CSV export.

import requests

response = requests.get(
    'https://www.socialcrawl.dev/v1/tiktok/profile',
    params={'handle': 'charlidamelio'},
    headers={'x-api-key': 'sc_YOUR_API_KEY'}
)
data = response.json()
[ .JSON ]
{
  "success": true,
  "platform": "tiktok",
  "data": {
    "author": {
      "username": "charlidamelio",
      "followers": 152400000
    },
    "engagement": {
      "likes": 12400000000,
      "engagement_rate": 0.087
    },
    "metadata": {
      "language": "en",
      "content_category": "lifestyle"
    }
  }
}
+ 69 platforms
FAQ

Have a question? We got answers

Find answers to frequently asked questions about SocialCrawl's API, pricing, and capabilities.

Contact us
What does the Indeed Jobs API return?
Returns one Indeed job listing: title, company, location, description, and apply URL. The response uses the same JSON envelope as every SocialCrawl endpoint, with the data, credits_used and request_id fields.
When should I use the Indeed Jobs endpoint?
Use it after indeed/search, passing a job id from that list to read the full description.
How much does the Indeed Jobs API cost?
Each call costs 5 credits, so the 100 free credits every new account gets cover 20 calls. Credits for failed or empty calls are refunded automatically, and there is no subscription.
What parameters does the Indeed Jobs API need?
The one required parameter is id (indeed job id from indeed/search).
How do I call the Indeed Jobs API?
Send a GET request to https://www.socialcrawl.dev/v1/jobs/indeed?id=aWQ9NWExYzEwM2YzOTEzODljNDtjYz11cw%3D%3D with your API key in the x-api-key header. An Authorization: Bearer header works too.

Ask AI about SocialCrawl

Ready to scrape Jobs Indeed data?

Get your API key and start pulling Jobs data in under 60 seconds.

Start for free

🤖 AI agent or LLM? Read this page as markdown