All platforms

JobScore Jobs API.

Full-cycle recruiting software with built-in job board distribution and public JSON API access.

JobScore
Live
30K+jobs indexed monthly
<3haverage discovery time
1hrefresh interval
Companies using JobScore
ImgixGrowing SMBsTech startups
Developer tools

Try the API.

Test Jobs, Feed, and Auto-Apply endpoints against https://connect.jobo.world with live request/response examples, then copy ready-to-use curl commands.

What's in every response.

Data fields, real-world applications, and the companies already running on JobScore.

Data fields
  • Job board distribution
  • Full-cycle recruiting
  • Candidate database
  • Interview scheduling
  • Reporting
  • Public JSON API
  • Rich job metadata
Use cases
  1. 01SMB job monitoring
  2. 02Company career page scraping
  3. 03Job market research
  4. 04Recruiting pipeline tracking
Trusted by
ImgixGrowing SMBsTech startups
DIY GUIDE

How to scrape JobScore.

Step-by-step guide to extracting jobs from JobScore-powered career pages—endpoints, authentication, and working code.

RESTbeginnerNo official limits; implement reasonable delays between requestsNo auth

Fetch the JSON feed for a company

Use the public feed.json endpoint to retrieve all active jobs for a company in a single request. No authentication is required.

Step 1: Fetch the JSON feed for a company
import requests

company_code = "imgix"
url = f"https://careers.jobscore.com/jobs/{company_code}/feed.json"

response = requests.get(url, timeout=10)
response.raise_for_status()
data = response.json()

company_name = data.get("company_name")
jobs = data.get("jobs", [])
print(f"Found {len(jobs)} jobs for {company_name}")

Parse job details from the response

Each job object contains full details including title, description, location, department, experience level, and apply URL. Extract the fields you need.

Step 2: Parse job details from the response
for job in jobs:
    job_info = {
        "id": job.get("id"),
        "title": job.get("title"),
        "department": job.get("department"),
        "location": job.get("location"),
        "city": job.get("city"),
        "state": job.get("state"),
        "country": job.get("country"),
        "experience_level": job.get("experience_level"),
        "job_type": job.get("job_type"),
        "remote": job.get("remote"),
        "apply_url": job.get("apply_url"),
        "detail_url": job.get("detail_url"),
        "opened_date": job.get("opened_date"),
        "last_updated": job.get("last_updated_date"),
    }
    print(job_info)

Detect remote job positions

Check the remote and location fields to determine if a job supports remote work. Multiple fields may indicate remote status.

Step 3: Detect remote job positions
def is_remote(job: dict) -> bool:
    remote_field = job.get("remote", "").lower()
    location = job.get("location", "").lower()

    # Check remote field for indicators
    if "yes" in remote_field or "100%" in remote_field or "remote" in remote_field:
        return True

    # Check location field
    if location == "remote":
        return True

    return False

remote_jobs = [j for j in jobs if is_remote(j)]
print(f"Found {len(remote_jobs)} remote positions")

Extract company code from URLs

When discovering companies, extract the company code from JobScore career page URLs using a regex pattern.

Step 4: Extract company code from URLs
import re

def extract_company_code(url: str) -> str | None:
    """Extract company code from JobScore URLs."""
    pattern = r'careers.jobscore.com/(?:careers|jobs)/([^/?]+)'
    match = re.search(pattern, url)
    return match.group(1) if match else None

# Example usage
urls = [
    "https://careers.jobscore.com/careers/imgix",
    "https://careers.jobscore.com/jobs/imgix/feed.json",
]

for url in urls:
    code = extract_company_code(url)
    print(f"URL: {url} -> Company Code: {code}")

Handle errors and empty results

Implement proper error handling for invalid company codes and empty job boards. A 404 indicates an invalid company code or closed job board.

Step 5: Handle errors and empty results
import requests

def fetch_jobscore_jobs(company_code: str) -> list[dict]:
    url = f"https://careers.jobscore.com/jobs/{company_code}/feed.json"

    try:
        response = requests.get(url, timeout=10)
        response.raise_for_status()
        data = response.json()
        return data.get("jobs", [])
    except requests.HTTPError as e:
        if e.response.status_code == 404:
            print(f"Company '{company_code}' not found or job board closed")
        else:
            print(f"HTTP error: {e}")
        return []
    except requests.RequestException as e:
        print(f"Request failed: {e}")
        return []

jobs = fetch_jobscore_jobs("imgix")
print(f"Retrieved {len(jobs)} jobs")
Common issues
mediumCompany code not found (404 error)

Verify the company code from the actual careers page URL. Some companies may have closed their job board or use a different ATS.

highInvalid JSON response or malformed data

Ensure you are requesting feed.json (not feed). Validate the response is valid JSON before parsing. Some companies may have misconfigured feeds that return HTML error pages instead of JSON.

lowEmpty jobs array returned

This is normal when a company has no open positions. Treat this as a valid empty result, not an error.

lowMissing description HTML content

Some companies may have minimal job descriptions. Always check if the description field exists and handle null values gracefully.

lowMultiple employment types in single field

The job_type field may contain multiple values like 'Contract, Temp to Full Time'. Parse these as comma-separated values.

mediumCompany code extraction fails from custom URLs

Some companies may use custom domains that redirect to JobScore. Follow redirects and extract the company code from the final URL.

Best practices
  1. 1Use the JSON feed API instead of HTML scraping for reliable data
  2. 2Cache results as job boards typically update infrequently
  3. 3Extract the company code from career page URLs before API calls
  4. 4Handle empty job arrays gracefully as valid responses
  5. 5Check both remote and location fields for remote work detection
  6. 6Parse job_type field for comma-separated employment types
Or skip the complexity

One endpoint. All JobScore jobs. No scraping, no sessions, no maintenance.

Get API access
cURL
curl "https://enterprise.jobo.world/api/jobs?sources=jobscore" \
  -H "X-Api-Key: YOUR_KEY"
Ready to integrate

Access JobScore
job data today.

One API call. Structured data. No scraping infrastructure to build or maintain — start with the free tier and scale as you grow.

99.9%API uptime
<200msAvg response
50M+Jobs processed