ChiroJobs APIchirojobs.com ↗
Access chiropractic job listings, full job details, categories, blog posts, and employer info from ChiroJobs.com via a structured JSON API.
What is the ChiroJobs API?
The ChiroJobs API provides access to 6 endpoints covering chiropractic job listings, detailed posting data, job categories, blog content, and employer information from ChiroJobs.com. Use list_jobs to search and filter postings by location, job type, specialty, and recency, then pass the returned job_id and slug pair to get_job_detail to retrieve the full description, apply URL, and application method for any individual posting.
curl -X GET 'https://api.parse.bot/scraper/19bcf23b-035b-44fd-ba94-3752e385ef16/list_jobs?page=1&sort=relevance&radius=500&category=Chiropractic+Doctor&job_type=Full-time&location=United+States&posted_at=30&specialty=chiropractic' \ -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 chirojobs-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.
"""ChiroJobs SDK — search jobs, drill into details, browse blog and pricing."""
from parse_apis.chirojobs_api import ChiroJobs, Category, JobType, Sort, PostedAt, JobNotFound
client = ChiroJobs()
# Search full-time chiropractic doctor jobs, sorted by posting date
for job in client.jobsummaries.search(
category=Category.CHIROPRACTIC_DOCTOR,
job_type=JobType.FULL_TIME,
sort=Sort.POSTED_AT,
limit=5,
):
print(job.title, job.location, job.salary)
# Drill into the first result for full description and apply link
job_summary = client.jobsummaries.search(
posted_at=PostedAt.THIRTY_DAYS, limit=1
).first()
if job_summary:
detail = job_summary.details()
print(detail.title, detail.employer, detail.apply_method)
print(detail.description_text[:200])
# List available job categories
for cat in client.jobcategories.list(limit=5):
print(cat.name, cat.id)
# Browse blog posts and read one
post_summary = client.blogposts.list(limit=1).first()
if post_summary:
full_post = post_summary.details()
print(full_post.title, full_post.content_text[:150])
# Typed error handling — catch not-found on a stale job
if job_summary:
try:
stale = job_summary.details()
print(stale.title)
except JobNotFound as exc:
print(f"Job gone: {exc.job_id}")
# Pricing plans
for plan in client.pricingplans.list(limit=3):
print(plan.name, plan.price, plan.features[:2])
print("exercised: jobsummaries.search / details / jobcategories.list / blogposts.list / blogposts.details / pricingplans.list")
List chiropractic job postings with optional filters for location, category, job type, specialty, date posted, and radius. Returns paginated results. Each job includes an identifier pair (job_id + slug) needed to fetch full details via get_job_detail.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number for pagination. |
| sort | string | Sort order for results. |
| radius | integer | Search radius in miles around the specified location. |
| category | string | Job category filter. |
| job_type | string | Job type filter. |
| location | string | Location text filter in City, State, Country format. |
| posted_at | string | Date posted filter in days. |
| specialty | string | Practice specialty or keyword text filter. |
{
"type": "object",
"fields": {
"jobs": "array of job summary objects",
"total_on_page": "integer count of jobs returned on this page"
},
"sample": {
"data": {
"jobs": [
{
"url": "https://www.chirojobs.com/jobs/182957704-chiropractic-associate",
"slug": "chiropractic-associate",
"tags": [
"Chiropractic Doctor",
"Diversified",
"Thompson/Drop"
],
"title": "Chiropractic Associate",
"job_id": "182957704",
"salary": "$80k - $90k / year",
"employer": "DeSalvo Chiropractic",
"job_type": "Full-time",
"location": "Novato, California, United States",
"easy_apply": false,
"posted_date": "10h ago",
"employer_url": "https://www.chirojobs.com/companies/desalvo-chiropractic-6184814",
"employer_logo": "https://d3535lqr6sqxto.cloudfront.net/employers/H7qGvoASFSmyInkHcRmQdsCXUO7iJ2eYRD8kExjJ.png"
}
],
"total_on_page": 17
},
"status": "success"
}
}About the ChiroJobs API
Job Search and Filtering
The list_jobs endpoint accepts up to eight filter parameters: location (City, State, Country format), radius (miles), category, job_type, specialty, posted_at (days), sort, and page for pagination. It returns an array of job summary objects alongside a total_on_page count. Each summary includes a job_id and slug pair required to fetch complete data. Filters can be stacked — for example, combining location, radius, and specialty to narrow results to a specific practice type within a geographic area.
Job Detail and Application Data
get_job_detail takes the job_id and slug from list_jobs results and returns the full posting: title, employer, employer_url, description_html, description_text, apply_url, and apply_method. The apply_method field distinguishes between on-site applications (Easy Apply) and redirects to external employer sites, which is useful when routing applicants through different flows.
Categories and Blog Content
list_job_categories returns all available category names and their internal IDs with no inputs required. These name values feed directly into the category filter on list_jobs. The list_blog_posts endpoint paginates blog post summaries — each with a url, slug, title, and thumbnail — and get_blog_post retrieves the full article body in both content_html and content_text for any post slug. Blog content covers chiropractic industry topics relevant to job seekers and employers.
Pricing Data
get_pricing returns the current job posting plans available on ChiroJobs.com, including each plan's name, price, and a features array listing what is included. This is useful for applications that present employer-facing information or need to surface posting costs alongside listing data.
The ChiroJobs API is a managed, monitored endpoint for chirojobs.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when chirojobs.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 chirojobs.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 chiropractic job listings into a niche healthcare job board filtered by specialty and location radius
- Send automated job alerts by polling
list_jobswithposted_atto surface newly listed postings - Build an employer research tool using
employer,employer_url, andapply_methodfromget_job_detail - Populate a content feed with chiropractic industry articles using
list_blog_postsandget_blog_post - Sync job category taxonomy into a search UI using
list_job_categoriesto drive filter dropdowns - Compare employer posting costs by pulling plan names and feature sets from
get_pricing
| 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 ChiroJobs.com have an official developer API?+
What does `get_job_detail` return beyond what `list_jobs` provides?+
get_job_detail returns the full job posting content: description_html and description_text for the complete body, apply_url for the direct application link, apply_method indicating Easy Apply versus an external redirect, and employer_url for the employer profile page. list_jobs returns summary-level data only — not the full description or apply URL.How does the `location` filter work in `list_jobs`, and does it support coordinates?+
location parameter accepts text in City, State, Country format. The radius parameter (in miles) controls the search area around that location. Coordinate-based input (latitude/longitude) is not a supported parameter in the current API. You can fork it on Parse and revise to add a coordinate-to-location conversion step if needed.Does the API return employer contact details like phone numbers or email addresses?+
employer, employer_url, and apply_url, but direct contact fields like phone numbers or email addresses are not returned. You can fork it on Parse and revise to add an employer profile endpoint if that data is available on the employer pages.Is there a way to retrieve the total number of jobs matching a search, not just `total_on_page`?+
list_jobs returns total_on_page, which reflects the count of results on the current page only. A global total-results count across all pages is not currently included in the response. You can fork it on Parse and revise to capture and expose that field if it appears in the underlying data.