keepcalculator

06 Numbers and Powers

Job Search API: How Apply URLs Reveal Requisition IDs

Card No. 06·55468 · Updated · Standard formula, shown below

When you use a job search API, the apply URL often contains a requisition ID—a unique identifier for the job posting within the employer’s applicant tracking system (ATS). This ID is embedded in the URL’s query string or path, and extracting it lets you deduplicate listings, track applications, or link directly to the employer’s career page. Here’s how to find and use it.

What Is a Requisition ID?

A requisition ID (often abbreviated as “req ID” or “job ID”) is an alphanumeric or numeric code that an employer’s ATS assigns to each open position. It is the internal reference number used by recruiters to manage applications, interview pipelines, and hiring workflows. In the context of a job search API, the requisition ID is the most reliable way to identify a specific job posting across different platforms, because it is stable and unique within the employer’s system.

How Apply URLs Are Structured

When a job search API returns a job object, it typically includes an apply_url field. This URL points to the employer’s application page, and it often contains the requisition ID in one of several common formats:

  • Query parameter: https://jobs.employer.com/apply?req=123456
  • Path segment: https://jobs.employer.com/jobs/123456
  • Fragment: https://jobs.employer.com/apply#req-123456
  • Encoded or hashed: https://jobs.employer.com/apply?jobId=abc123

Not all URLs are this transparent. Some use opaque tokens or redirects that hide the ID until you follow the link. But many ATS platforms—like Workday, Greenhouse, Lever, and SuccessFactors—include the requisition ID in the URL because it helps their own systems route candidates correctly.

Why the Requisition ID Matters for API Users

For developers building job boards, aggregators, or internal tracking tools, the requisition ID solves a few practical problems:

  • Deduplication: The same job may be posted on multiple boards. The requisition ID lets you collapse duplicates into one record.
  • Direct linking: You can construct a clean, stable link to the employer’s application page, bypassing intermediary redirects.
  • Status tracking: If you poll the API periodically, the requisition ID lets you detect when a posting is closed or reposted under the same ID.
  • Cross-referencing: You can match jobs from different APIs (e.g., a general search API and a company-specific API) by the same requisition ID.

How to Extract the Requisition ID

Extracting the ID from an apply URL is straightforward if you know where to look. Here’s a step-by-step approach:

  1. Parse the URL in your preferred language. For example, in JavaScript you can use new URL(applyUrl) to access the pathname and searchParams.
  2. Look for common parameter names like req, jobId, job_id, requisition, id, or gh_jid (Greenhouse uses gh_jid).
  3. Check the path for a numeric segment. For example, /jobs/123456 or /job/123456/apply.
  4. If the ID is not obvious, look at the page’s HTML or meta tags after following the URL—many ATS pages include a data-requisition-id attribute or a canonical link with the ID.
  5. Fall back to a hash of the URL if no ID is found. It won’t be the employer’s ID, but it can still serve as a unique key for your own database.

Here’s a simple Python example that extracts a numeric ID from a URL:

import re
from urllib.parse import urlparse, parse_qs

url = "https://jobs.employer.com/apply?req=123456"
parsed = urlparse(url)
query_id = parse_qs(parsed.query).get("req", [None])[0]
path_match = re.search(r"/(\d+)", parsed.path)
path_id = path_match.group(1) if path_match else None
req_id = query_id or path_id
print(req_id)  # Output: 123456

Common Problems and Pitfalls

While the concept is simple, real-world URLs throw curveballs:

  • Redirects: The apply URL may redirect to a different domain or add parameters. Use a HEAD request or a library that follows redirects to get the final URL.
  • Tracking parameters: URLs often include utm_source, spm, or other tracking codes. These don’t affect the requisition ID but can clutter your parsing.
  • Multiple IDs: Some URLs contain both a job ID and a company ID. Make sure you extract the one that identifies the position, not the employer.
  • Non-numeric IDs: Some ATS use UUIDs or base64-encoded strings. Treat them as opaque strings—don’t try to interpret them.
  • Missing IDs: Not every apply URL includes a requisition ID. In that case, you may need to scrape the page or use the job’s id field from the API response itself.

How to Choose the Right Extraction Method

The best approach depends on your use case:

  • If you control the API source (e.g., you’re integrating with a partner), ask them to include the requisition ID as a separate field. That’s more reliable than parsing URLs.
  • If you’re consuming a third-party API, test a sample of URLs to see which patterns appear. Build a parser that handles the top 2–3 patterns, then fall back to a hash.
  • If you need high accuracy, consider fetching the apply URL and looking for structured data (like JSON-LD) on the page. Many ATS pages embed the requisition ID in a script tag.

Cost and Alternatives

Parsing apply URLs is free and requires no special tools—just a regular expression or URL parser. If you need a more robust solution, some job search APIs (like those from Indeed, LinkedIn, or specialized job boards) provide a job_id field in the response that serves the same purpose. That’s often easier than extracting from the URL, but it may not match the employer’s internal requisition ID.

If you need the employer’s exact requisition ID for tracking, the apply URL is usually the only public source. In that case, a combination of URL parsing and page scraping gives the highest success rate.

Frequently Asked Questions

Can I always find the requisition ID in the apply URL?

No. Some ATS platforms hide the ID behind a redirect or use a generic URL like https://jobs.employer.com/apply. In those cases, you may need to inspect the page’s HTML or use the job ID from the API response instead.

What if the URL contains multiple numbers?

Look for the number that appears after a known parameter name (like req=) or in a path segment that matches a pattern like /job/. If that fails, you can compare the URL to the job listing page to see which number matches the job title.

Is the requisition ID the same across all job boards?

Yes, if the employer uses the same ATS for all postings. However, some employers use different ATS platforms for different regions or subsidiaries, so the same job might have different requisition IDs on different boards.

How do I deduplicate jobs when the URL doesn’t have an ID?

Use a combination of the job title, company name, location, and posting date. You can also create a hash of the normalized URL (without tracking parameters) as a fallback key.

Can I use the requisition ID to apply directly?

Yes, the apply URL with the requisition ID is the direct link to the application form. You can construct a clean URL like https://jobs.employer.com/apply?req=123456 to bypass any intermediate pages.

Does the requisition ID ever change?

For a given posting, the ID stays the same. If the employer reposts the job, they may issue a new ID, but that’s not always the case. Some ATS reuse IDs after a posting is closed.

Related

Method: the standard formula for this calculation, rounded as each result states. See how the calculators work or report an error.

More cards in this drawer

The whole Numbers and Powers drawer →