HubMub APIhubmub.com ↗
Access HubMub job listings via API. Search by keyword, location, industry, and category. Retrieve full job details including description, tags, and company info.
What is the HubMub API?
The HubMub API gives developers access to job listings through 2 endpoints covering search and full detail retrieval. search_jobs returns paginated results of up to 12 jobs per page with filters for remote work, visa sponsorship, relocation, location, industry, and category. get_job fetches the complete record for a single listing, including the full job description, company URL, and associated industries and categories.
curl -X GET 'https://api.parse.bot/scraper/df65a1f9-e7d3-4e80-8c38-9700d9cf67f2/search_jobs?page=1&remote=true&search=software+engineer&category=30&industry=Technology&location=Germany&relocation=true&visa_sponsorship=true' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace hubmub-com-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Walkthrough: HubMub SDK — bounded, re-runnable; every call capped."""
from parse_apis.hubmub_com_api import HubMub, JobNotFound
client = HubMub()
# Search for remote software engineering jobs, capped at 3 results.
for job in client.job_summaries.search(search="software engineer", remote="true", limit=3):
print(job.title, job.company, job.country)
# Drill into the first result's full details.
hit = client.job_summaries.search(search="python", category="30", limit=1).first()
if hit:
full = hit.details()
print(full.title, full.company, full.location)
print("Industries:", full.industries)
print("Categories:", full.categories)
# Typed error handling: catch a not-found job via details().
try:
bad = client.job_summaries.search(search="nonexistent xyz", limit=1).first()
if bad:
detail = bad.details()
print(detail.title)
except JobNotFound as e:
print("gone:", e.job_id)
print("exercised: job_summaries.search, JobSummary.details")
Search job listings with optional filters. Returns paginated results (12 per page) ordered by recency. Results are auto-iterated across pages; each JobSummary carries enough metadata for filtering client-side or drilling into full details via get_job.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number for pagination (1-based). |
| remote | boolean | When true, filter for remote jobs only. |
| search | string | Free-text search query matching job titles, skills, and companies. |
| category | string | Category ID to filter jobs. Use numeric IDs from the site's category list (e.g. '30' for Engineering, '31' for Information Technology). |
| industry | string | Industry name to filter jobs (e.g. 'Technology', 'Banking'). |
| location | string | Location name to filter jobs by country or city. |
| relocation | boolean | When true, filter for jobs offering relocation packages. |
| visa_sponsorship | boolean | When true, filter for jobs offering visa sponsorship. |
{
"type": "object",
"fields": {
"jobs": "array of job summary objects",
"page": "current page number",
"total_jobs": "total number of matching jobs",
"total_pages": "total number of pages available"
},
"sample": {
"jobs": [
{
"id": "1018329",
"url": "https://www.hubmub.com/jobs/1018329/software-engineer-ii",
"slug": "software-engineer-ii",
"tags": [
"Remote",
"Visa Sponsorship"
],
"title": "Software Engineer II",
"posted": "1 day ago",
"company": "Iterable",
"country": "United States",
"industry": "Software Development",
"employment_type": "Full-time",
"experience_level": "Not Applicable"
}
],
"page": 1,
"total_jobs": 86864,
"total_pages": 7239
}
}About the HubMub API
Searching Job Listings
The search_jobs endpoint accepts up to eight optional parameters. search matches against job titles, skills, and company names. category takes a numeric ID (e.g., 30 for Engineering), while industry accepts a name string such as Technology or Banking. location filters by country or city. Three boolean flags — remote, relocation, and visa_sponsorship — let you narrow results to listings that carry those specific perks. Results are ordered by recency and come back in pages of 12, with total_jobs and total_pages included in every response for straightforward pagination.
Retrieving Full Job Details
get_job accepts a required job_id (the numeric ID returned in search_jobs results) and an optional slug that improves URL resolution. The response includes title, company, country, location, description (full text), categories (array), industries (array), company_url, and a tags array that can carry values like Remote, Visa Sponsorship, and Relocation Package. This makes it straightforward to build a detail view or store structured records without a second search.
Coverage and Filters
HubMub focuses on international job listings with explicit support for relocation and visa sponsorship filtering, making it relevant to cross-border hiring workflows. The industry filter accepts plain-name strings while category requires numeric IDs, so callers need to know the ID mapping for category-based filtering. The search_jobs response includes enough summary metadata — title, company, location, and tags — to handle client-side filtering before issuing a get_job call.
The HubMub API is a managed, monitored endpoint for hubmub.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when hubmub.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official hubmub.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Aggregate remote-only jobs filtered by industry for a niche job board
- Track visa sponsorship and relocation listings for international job seekers
- Build job alert systems using
search_jobswith keyword and location filters - Populate a company-focused job feed using the
companyandcompany_urlfields fromget_job - Sync HubMub listings into an ATS or spreadsheet using paginated
search_jobsresults - Filter engineering job postings by category ID and store full descriptions via
get_job - Analyze hiring trends by industry using the
industriesarray returned in job detail responses
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does HubMub offer an official developer API?+
What does `search_jobs` return, and how does pagination work?+
search_jobs returns an array of job summary objects along with page, total_jobs, and total_pages. Each page contains up to 12 results ordered by recency. Pass the page parameter (1-based) to iterate through results. The summary objects include enough metadata — title, company, location, and tags — to filter client-side before calling get_job.What are the `tags` in a `get_job` response?+
tags field is an array that can include values such as Remote, Visa Sponsorship, and Relocation Package. These correspond directly to the boolean filter flags (remote, visa_sponsorship, relocation) available on search_jobs, so the tag values in a detail response confirm what the listing advertises.Does the API return company contact information or recruiter details?+
get_job returns a company_url pointing to the company's HubMub profile page and the company name, but direct contact details such as email addresses or recruiter names are not included in the response. You can fork this API on Parse and revise it to add an endpoint that retrieves additional data from the company profile page.Can I filter jobs by salary range?+
search_jobs endpoint filters on search, category, industry, location, remote, relocation, and visa_sponsorship, and the get_job response does not include a structured salary field. You can fork this API on Parse and revise it to extract and expose salary data if the underlying listing includes it.