JSearch API: build job search automation workflows
JSearch API: build job search automation workflows
The JSearch API aggregates job listings from across the internet — LinkedIn, Indeed, Glassdoor, ZipRecruiter, and dozens of other sources — into a single API endpoint. Instead of scraping individual job boards (which violates most of their Terms of Service and breaks constantly), you query one API and get normalized results from multiple sources.
Job boards are walled gardens by design. Each wants you on their platform, not pulling data via API. JSearch, available on RapidAPI, solves this by aggregating public job listing data. According to the US Bureau of Labor Statistics, there were 7.7 million job openings in the US as of early 2025. A 2025 Recruiter.com survey found that recruiters spend an average of 23 hours per week sourcing candidates — much of it manual job board browsing that could be automated.
Unlike generic AI automation posts, this guide shows real CodeWords workflows — not just theory. You will build job search pipelines that run automatically and deliver filtered results where your team works.
Related reading: AI workflow automation, workflow automation examples, no-code automation, Google Sheets database template, CodeWords integrations, CodeWords templates, CodeWords pricing.
TL;DR
- JSearch API aggregates job listings from multiple job boards into a single REST endpoint, available through RapidAPI. Supports search, filtering by location and date, and job detail retrieval.
- The free tier allows 100 requests/month. Paid tiers start at $30/month for 10,000 requests — enough for daily monitoring of 30+ search queries.
- CodeWords automates the full pipeline: scheduled search → filter → deduplicate → notify on Slack or store in Airtable.
How do you set up the JSearch API?
JSearch is hosted on RapidAPI. Setup takes five minutes.
Step 1: Get your API key.
- Create an account at RapidAPI
- Subscribe to the JSearch API — the free tier works for testing
- Copy your API key from the RapidAPI dashboard
Step 2: Make your first request.
import requests
url = "https://jsearch.p.rapidapi.com/search"
querystring = {
"query": "Python developer in San Francisco",
"page": "1",
"num_pages": "1",
"date_posted": "week"
}
headers = {
"X-RapidAPI-Key": "YOUR_RAPIDAPI_KEY",
"X-RapidAPI-Host": "jsearch.p.rapidapi.com"
}
response = requests.get(url, headers=headers, params=querystring)
data = response.json()
for job in data.get("data", []):
print(f"{job['job_title']} at {job['employer_name']} - {job['job_city']}")
A successful response returns job listings with titles, companies, locations, descriptions, salaries (when available), and direct application links.
Step 3: Understand the response structure.
Each job listing includes:
job_title— position nameemployer_name— company nameemployer_logo— company logo URLjob_city,job_state,job_country— location datajob_description— full description textjob_apply_link— direct application URLjob_min_salary,job_max_salary— salary range (when disclosed)job_posted_at_datetime_utc— posting timestamp
How do you build a job search monitoring workflow?
The real value of the JSearch API is not one-off queries — it is continuous monitoring. Set up a workflow that runs daily, searches for your criteria, and delivers new listings to you.
Monitoring workflow architecture:
- Trigger: Schedule (daily at 8 AM) or on-demand (Slack slash command)
- Search: Query JSearch API with your criteria
- Filter: Remove irrelevant results based on keywords, salary range, or company
- Deduplicate: Compare against previously seen listings (stored in Redis or Airtable)
- Notify: Send new listings to Slack, email, or WhatsApp
- Store: Log all results to Airtable or Google Sheets for tracking
CodeWords workflow:
In CodeWords, describe this to Cody:
Build a workflow that runs every morning at 8 AM.
Search JSearch API for "senior backend engineer" jobs in "remote" posted in the last 24 hours.
Filter out results from staffing agencies (keywords: "staffing", "recruiting agency", "talent solutions").
Filter for jobs with salary above $150k when salary data is available.
Compare results against the existing list in this Airtable base to avoid duplicates.
Send new matches to #job-alerts on Slack with title, company, salary, and apply link.
Add all new listings to the Airtable base with a "new" status.
Cody generates a serverless workflow that handles the API calls, filtering logic, deduplication, and notifications. State persistence through Redis ensures the workflow remembers what it has already seen across runs.
What can you build with the JSearch API beyond basic search?
Think of job listing data as a signal — it tells you who is hiring, for what roles, at what salary ranges, and in which locations. That signal powers several workflows beyond personal job searching.
Competitive intelligence. Monitor job postings from specific companies to understand their hiring priorities. A surge of "machine learning engineer" postings signals an AI investment. A wave of "compliance officer" postings signals regulatory pressure. Set up a CodeWords workflow that monitors 10 competitor companies and summarizes new postings weekly.
Salary benchmarking. Aggregate salary data from job postings across a role and location. JSearch returns salary ranges when disclosed. Over 30 days of monitoring, you build a dataset that shows market rate for specific roles — useful for compensation planning and offer negotiations.
Recruitment sourcing. Recruitment agencies can monitor JSearch for roles matching their candidate pool. When a new posting matches a candidate's profile, the workflow automatically sends the opportunity to the recruiter for review.
Market trend analysis. Track demand for specific skills (Rust, Kubernetes, LLM fine-tuning) over time by counting job postings mentioning those terms. Use CodeWords' native LLM access to analyze job descriptions and extract required skills, then visualize trends in Google Sheets.
How do you handle JSearch API rate limits and optimize costs?
The free tier allows 100 requests/month — roughly 3 searches per day. Paid tiers scale from there.
Optimize request usage:
- Use date filters. The
date_postedparameter (today,3days,week,month) reduces duplicate results across runs. For daily monitoring, usetodayor3days. - Be specific in queries. "Python developer San Francisco remote" returns more relevant results than "developer" — fewer pages to paginate, fewer results to filter.
- Cache aggressively. Store results in Redis or Airtable. Before making an API call, check if you already have recent data for that query.
- Batch queries efficiently. If monitoring 10 search queries, schedule them in a single workflow execution rather than 10 separate triggers.
Rate limit handling in code:
import time
def search_with_retry(query, max_retries=3):
for attempt in range(max_retries):
response = requests.get(url, headers=headers, params={"query": query})
if response.status_code == 200:
return response.json()
elif response.status_code == 429:
wait_time = 2 ** attempt
time.sleep(wait_time)
else:
response.raise_for_status()
return None
CodeWords workflows handle rate limiting through built-in retry logic with exponential backoff — no custom retry code needed.
FAQ
Is the JSearch API free?
JSearch offers a free tier with 100 requests/month on RapidAPI. Paid plans start at $30/month for 10,000 requests. For daily monitoring of multiple search queries, the Basic paid tier ($30/month) is typically sufficient.
Does JSearch return all job listings from every job board?
No. JSearch aggregates from major job boards, but coverage varies by region and role type. US-based tech roles have the best coverage. Niche industries or non-English markets may have gaps. Test with your specific search criteria before building production workflows.
Can I use JSearch for commercial applications?
Yes, RapidAPI's terms allow commercial use on paid plans. Review the specific terms on the JSearch API page for your use case. If building a recruitment tool, ensure compliance with job board source attribution requirements.
How fresh is the JSearch data?
JSearch updates listings frequently, but there is inherent lag between a job being posted on a source board and appearing in JSearch results. Expect 1–24 hour delays for most listings. For time-sensitive applications, supplement with direct API access to priority job boards.
Job data as operational intelligence
Most people use job search APIs to find a job. The more interesting use is treating job listings as a data source — a real-time signal about what companies are building, what skills they need, and what they are willing to pay. Recruiting teams, investors, competitive analysts, and compensation planners all benefit from automated job data pipelines.
The JSearch API turns that signal into structured data. The workflow turns structured data into action.
Build your job monitoring pipeline in CodeWords and deliver filtered results to Slack, Airtable, or email.





