Indeed Scraper API (Python)
A small Python client that turns Indeed job pages into clean JSON using the ScrapingBee web scraping API. You pass a search query and a location, and you get back a list of jobs with title, company, location, and link. The headless browser rendering, residential proxies, and HTML parsing are handled for you.
Indeed renders its results with JavaScript and defends against automated traffic, so a plain requests.get returns little. This Indeed scraper sends each request through ScrapingBee with JavaScript rendering and residential proxies switched on, then applies the extraction rules server-side so you never touch BeautifulSoup.
Install
pip install indeed-scraper-api
Quickstart
from indeed_scraper_api import IndeedScraper
scraper = IndeedScraper(api_key="YOUR_SCRAPINGBEE_API_KEY")
result = scraper.search("python developer", location="New York", start=0)
for job in result["jobs"]:
print(job["title"], "-", job["company"], "-", job["location"])
Get an API key with 1,000 free credits at ScrapingBee; no card required.
What you get back
search() returns a dictionary with a jobs list, one entry per Indeed job card:
{
"jobs": [
{
"title": "Python Developer",
"company": "Acme Corp",
"location": "New York, NY",
"url": "/rc/clk?jk=..."
}
]
}
The fields come straight from the CSS selectors documented in ScrapingBee's data extraction rules, so you can add your own fields by passing a custom extract_rules dictionary.
API reference
IndeedScraper(api_key, timeout=60) creates a client.
search(query, location="", start=0, **options)returns structured jobs for one results page. Indeed pages in steps of 10, sostart=10is page two.pages(query, location="", count=3, **options)yields structured results for the firstcountpages.scrape(url, extract_rules=None, **options)fetches any Indeed URL. Returns rendered HTML, or JSON when you passextract_rules.
Every method accepts these overrides:
| Option | Default | Purpose |
|---|---|---|
render_js |
True |
Run the page in a headless browser |
premium_proxy |
True |
Route through residential proxies |
country_code |
"us" |
Proxy country |
wait |
5000 |
Milliseconds to wait after load |
extract_rules |
JOB_RULES |
Override the returned fields |
Credit cost
With residential proxies and JavaScript rendering both on, each request costs 25 ScrapingBee credits (Premium tier plus JS). Drop premium_proxy for cheaper datacenter requests where a target allows it. See ScrapingBee pricing for the credit table.
Requirements
Python 3.8 or newer, the requests library (installed automatically), and a ScrapingBee API key. This client is an independent wrapper built on the public ScrapingBee API and is not affiliated with Indeed.
Links
License
MIT
Metadata
Release files for indeed-scraper-api 0.0.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| indeed_scraper_api-0.0.1.tar.gz | 4.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| indeed_scraper_api-0.0.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 10.3 kB
Release files / indeed_scraper_api-0.0.1.tar.gz
| Download URL | indeed_scraper_api-0.0.1.tar.gz |
|---|---|
| Size | 4.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d0e59f5cb98dff59e6d6ace554251baa61b98a4d4848c2dfbb91dd63f20fdb86
|
|
BLAKE2b-256 checksum How to use checksums |
67bab6c6851a6bf96be720a63016a2045e1c5235ce181e7abf43144dee145e20
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.3
|
Release files / indeed_scraper_api-0.0.1-py3-none-any.whl
| Download URL | indeed_scraper_api-0.0.1-py3-none-any.whl |
|---|---|
| Size | 5.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
76f5255b6ec5793c0c721c350007053701ab5403bfa4bf59b1913791d22c25fb
|
|
BLAKE2b-256 checksum How to use checksums |
06863fb52859def26fe2785a813909f07a1c4915ae90eec98dca6134a94c6a01
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.3
|