Amazon Jobs Scraper
Pricing
Pay per event
Amazon Jobs Scraper
Extract public Amazon.jobs listings, locations, teams, descriptions, and qualifications. Export structured hiring data and monitor roles by query or URL.
Pricing
Pay per event
Rating
0.0
(0)
Developer
Stas Persiianenko
Maintained by CommunityActor stats
0
Bookmarked
7
Total users
3
Monthly active users
13 days ago
Last modified
Categories
Share
Scrape public Amazon.jobs search results and job details with an HTTP-only Apify Actor. Use it to monitor Amazon hiring by role, city, country, team, business category, seniority signals, and remote or virtual wording.
What does Amazon Jobs Scraper do?
Amazon Jobs Scraper collects structured job listings from the public Amazon.jobs career site. It queries the same public search data used by the website and saves normalized rows to an Apify dataset.
Each result can include the job title, job ID, job URL, location, team, business category, job category, dates, description, basic qualifications, and preferred qualifications.
Who is it for?
- 🧑💼 Recruiters tracking Amazon hiring demand by market.
- 📊 Labor-market analysts measuring hiring velocity across Amazon teams.
- 🏢 Competitive-intelligence teams watching business-unit expansion.
- 🌍 Location strategy teams comparing open roles by country or city.
- 🤖 Automation builders feeding job intelligence into CRMs, dashboards, or alerts.
Why use this actor?
- ✅ HTTP-only implementation, no browser overhead.
- ✅ Public Amazon.jobs data, no account required.
- ✅ Search URL mode for exact filters copied from Amazon.jobs.
- ✅ Query mode for simple keyword and location monitoring.
- ✅ Clean text extraction from HTML descriptions and qualification fields.
What data can you extract?
| Field | Description |
|---|---|
jobId | Amazon job identifier |
title | Job title |
jobUrl | Public Amazon.jobs detail URL |
location | Main display location |
locations | All normalized locations found in the source record |
countryCode | Country code when provided by Amazon.jobs |
city | City when provided |
state | State or region when provided |
team | Team label from Amazon.jobs |
businessCategory | Business category slug or label |
jobCategory | Job category |
postedDate | Posted date when available |
updatedDate | Updated timestamp when available |
jobType | Primary search label when available |
schedule | Schedule type when available |
remoteOrVirtual | Remote/virtual signal derived from source text |
description | Cleaned job description |
basicQualifications | Cleaned basic qualifications |
preferredQualifications | Cleaned preferred qualifications |
sourceSearchUrl | Search URL that produced the result |
scrapedAt | ISO timestamp for the scrape |
How much does it cost to scrape Amazon jobs?
The actor uses pay-per-event pricing. A small start event covers run setup and a per-item event is charged for each saved job listing. Keep maxItems low for trial runs, then increase it once the query returns the type of jobs you need.
How to use it
- Open the actor on Apify.
- Paste an Amazon.jobs search URL, or enter a role keyword and location.
- Set
maxItemsto the number of jobs you need. - Run the actor.
- Export the dataset as JSON, CSV, Excel, or via API.
Input options
Search URL
Use this when you already configured filters on Amazon.jobs:
{"searchUrl": "https://www.amazon.jobs/en/search?base_query=software&loc_query=Berlin","maxItems": 25}
Query mode
Use this for repeatable monitoring jobs:
{"baseQuery": "data scientist","locationQuery": "United States","maxItems": 50}
Optional filters
The actor supports optional jobCategory, businessCategory, country, and sort fields. These are most useful when copied from a filtered Amazon.jobs URL or when you maintain a known taxonomy of Amazon.jobs categories. For plain city/country text, the actor resolves common Amazon hiring hubs (for example Berlin -> city=Berlin&country=DEU) and post-filters saved rows so ignored Amazon.jobs loc_query values do not return unrelated countries.
Output example
{"jobId": "1234567","title": "Software Development Engineer","jobUrl": "https://www.amazon.jobs/en/jobs/1234567/software-development-engineer","location": "Berlin, BE, DEU","countryCode": "DEU","city": "Berlin","team": "Amazon Web Services","businessCategory": "amazon-web-services","jobCategory": "software-development","postedDate": "2026-06-01","description": "Job description text...","basicQualifications": "Basic qualifications text...","preferredQualifications": "Preferred qualifications text...","sourceSearchUrl": "https://www.amazon.jobs/en/search.json?base_query=software&loc_query=Berlin%2C+Germany&country=DEU&city=Berlin","scrapedAt": "2026-06-14T00:00:00.000Z"}
Tips for better results
- 🔎 Start with a broad keyword, then narrow by location.
- 📍 Use Amazon.jobs URLs if you need exact filters; plain locations such as
Berlinare enriched with country/city parameters when possible. - 🧪 Test with
maxItems10–25 before larger monitoring runs. - 🧹 Use
jobIdfor de-duplication in downstream systems. - 🕒 Schedule daily or weekly runs to monitor hiring changes.
Common use cases
- Track Amazon software engineering openings in target cities.
- Monitor warehouse and operations hiring by country.
- Watch AWS or Devices team expansion.
- Build dashboards of Amazon hiring by business unit.
- Feed new Amazon job openings into Slack, Airtable, or a CRM.
Integrations
Connect the dataset to:
- Google Sheets for lightweight reporting.
- Airtable for recruiting operations.
- Slack notifications for new matching jobs.
- BigQuery or Snowflake for labor-market analysis.
- Webhooks for automated lead or role monitoring workflows.
API usage with Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('automation-lab/amazon-jobs-scraper').call({baseQuery: 'software',locationQuery: 'Berlin',maxItems: 25,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
API usage with Python
from apify_client import ApifyClientimport osclient = ApifyClient(os.environ['APIFY_TOKEN'])run = client.actor('automation-lab/amazon-jobs-scraper').call(run_input={'baseQuery': 'software','locationQuery': 'Berlin','maxItems': 25,})items = client.dataset(run['defaultDatasetId']).list_items().itemsprint(items)
API usage with cURL
curl -X POST 'https://api.apify.com/v2/acts/automation-lab~amazon-jobs-scraper/runs?token=YOUR_APIFY_TOKEN' \-H 'Content-Type: application/json' \-d '{"baseQuery":"software","locationQuery":"Berlin","maxItems":25}'
MCP usage
Use the Apify MCP server with Claude Code or Claude Desktop and enable this actor with:
https://mcp.apify.com/?tools=automation-lab/amazon-jobs-scraper
Add it in Claude Code with:
$claude mcp add apify-amazon-jobs https://mcp.apify.com/?tools=automation-lab/amazon-jobs-scraper
Claude Desktop JSON configuration:
{"mcpServers": {"apify-amazon-jobs": {"url": "https://mcp.apify.com/?tools=automation-lab/amazon-jobs-scraper"}}}
Example prompts:
- "Run Amazon Jobs Scraper for AWS roles in Seattle and summarize teams hiring most."
- "Find Amazon.jobs software openings in Berlin and export title, URL, and qualifications."
- "Monitor virtual Amazon roles and highlight senior management positions."
Scheduling
For monitoring workflows, schedule the actor daily or weekly. Use the same query and compare jobId values across datasets to identify newly posted roles.
Data quality notes
Amazon.jobs may not provide every field for every role. Fields such as team, schedule, state, or dates can be missing depending on the source record. The actor keeps unavailable values as null instead of guessing.
Troubleshooting
Why did I get fewer jobs than maxItems?
The search may have fewer public results than requested, or filters may be too narrow. Try a broader keyword or remove optional category filters.
Why are some descriptions long?
Amazon job descriptions and qualifications are naturally detailed. The actor cleans HTML but preserves the text so downstream users can analyze requirements.
Legality
This actor extracts publicly available job listing information. You should use the data responsibly, respect Amazon.jobs terms, and avoid collecting or processing personal data. If you are unsure, consult your legal advisor.
FAQ
Can I scrape a filtered Amazon.jobs URL?
Yes. Paste the filtered URL into searchUrl; the actor converts it to the public JSON search endpoint and preserves supported query parameters.
Does this actor require an Amazon account?
No. It uses public Amazon.jobs search data and does not log in.
Can I monitor new jobs over time?
Yes. Schedule repeat runs and compare jobId values across datasets to detect new or removed roles.
Related scrapers
- https://apify.com/automation-lab/linkedin-jobs-scraper
- https://apify.com/automation-lab/indeed-scraper
- https://apify.com/automation-lab/google-jobs-scraper
- https://apify.com/automation-lab/airbnb-careers-scraper
Changelog
Initial version: public Amazon.jobs search scraping with normalized job listing output.