JobScore Jobs API.
Full-cycle recruiting software with built-in job board distribution and public JSON API access.
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.
- Job board distribution
- Full-cycle recruiting
- Candidate database
- Interview scheduling
- Reporting
- Public JSON API
- Rich job metadata
- 01SMB job monitoring
- 02Company career page scraping
- 03Job market research
- 04Recruiting pipeline tracking
How to scrape JobScore.
Step-by-step guide to extracting jobs from JobScore-powered career pages—endpoints, authentication, and working code.
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}")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)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")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}")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")Verify the company code from the actual careers page URL. Some companies may have closed their job board or use a different ATS.
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.
This is normal when a company has no open positions. Treat this as a valid empty result, not an error.
Some companies may have minimal job descriptions. Always check if the description field exists and handle null values gracefully.
The job_type field may contain multiple values like 'Contract, Temp to Full Time'. Parse these as comma-separated values.
Some companies may use custom domains that redirect to JobScore. Follow redirects and extract the company code from the final URL.
- 1Use the JSON feed API instead of HTML scraping for reliable data
- 2Cache results as job boards typically update infrequently
- 3Extract the company code from career page URLs before API calls
- 4Handle empty job arrays gracefully as valid responses
- 5Check both remote and location fields for remote work detection
- 6Parse job_type field for comma-separated employment types
One endpoint. All JobScore jobs. No scraping, no sessions, no maintenance.
Get API accesscurl "https://enterprise.jobo.world/api/jobs?sources=jobscore" \
-H "X-Api-Key: YOUR_KEY" 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.