Amazon Jobs Scraper avatar

Amazon Jobs Scraper

Pricing

Pay per event

Go to Apify Store
Amazon Jobs Scraper

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

Stas Persiianenko

Maintained by Community

Actor 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?

FieldDescription
jobIdAmazon job identifier
titleJob title
jobUrlPublic Amazon.jobs detail URL
locationMain display location
locationsAll normalized locations found in the source record
countryCodeCountry code when provided by Amazon.jobs
cityCity when provided
stateState or region when provided
teamTeam label from Amazon.jobs
businessCategoryBusiness category slug or label
jobCategoryJob category
postedDatePosted date when available
updatedDateUpdated timestamp when available
jobTypePrimary search label when available
scheduleSchedule type when available
remoteOrVirtualRemote/virtual signal derived from source text
descriptionCleaned job description
basicQualificationsCleaned basic qualifications
preferredQualificationsCleaned preferred qualifications
sourceSearchUrlSearch URL that produced the result
scrapedAtISO 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

  1. Open the actor on Apify.
  2. Paste an Amazon.jobs search URL, or enter a role keyword and location.
  3. Set maxItems to the number of jobs you need.
  4. Run the actor.
  5. 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 Berlin are enriched with country/city parameters when possible.
  • 🧪 Test with maxItems 10–25 before larger monitoring runs.
  • 🧹 Use jobId for 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 ApifyClient
import os
client = 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().items
print(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.

Changelog

Initial version: public Amazon.jobs search scraping with normalized job listing output.