How to Scrape Job Listings
Job boards render listings dynamically, apply geographic and device-based filtering, and paginate results across hundreds of pages. Building a job data pipeline requires handling JavaScript rendering and systematic pagination.
Step-by-Step Guide
Construct your job search URL
Most job boards accept search parameters in the URL — job title, location, and date posted. Build the search URL that returns the listings you need.
Fetch with JavaScript rendering
Send the search URL to AlterLab with render_js enabled. Job boards frequently lazy-load listings and filter counts via JavaScript.
Extract listing data from result cards
Parse job title, company name, location, salary range (when available), and the job detail page URL from each listing card.
Paginate through all results
Follow the next-page links to collect all listings. Many job boards limit pagination to 20–40 pages — start with the most recent listings first.
Code Example
import requests
from bs4 import BeautifulSoup
def scrape_jobs(search_url: str, api_key: str) -> list[dict]:
response = requests.post(
"https://alterlab.io/api/v1/scrape",
headers={"X-API-Key": api_key, "Content-Type": "application/json"},
json={"url": search_url, "render_js": True},
)
html = response.json().get("html", "")
soup = BeautifulSoup(html, "html.parser")
jobs = []
for card in soup.select(".job-card"):
jobs.append({
"title": card.select_one(".job-title")?.get_text(strip=True),
"company": card.select_one(".company-name")?.get_text(strip=True),
"location": card.select_one(".location")?.get_text(strip=True),
"url": card.select_one("a")?.get("href"),
})
return jobsReplace YOUR_API_KEY with your key from the dashboard. No credit card required.
Ready to try it?
Run this tutorial on live websites with AlterLab's API. Start free — no credit card required.
Frequently Asked Questions
Responsible Use
AlterLab is designed for extracting publicly available data. Always review the terms of service for any website you access, respect robots.txt directives, and ensure your use case complies with applicable laws in your jurisdiction.
More tutorials
Browse all how-to guides for web scraping — from beginner extractions to advanced multi-page pipelines.
Your first scrape.
Sixty seconds.
$1 free balance. No credit card. No SDK.
Just a POST request.
No credit card required · Up to 5,000 free scrapes · Balance never expire