# Brightdata Indeed

> Scrape Indeed job listings and company data using BrightData Datasets API. Supports job postings by URL, job search by keyword/location/country, jobs from company pages, company profiles, company discovery by industry/state, and company keyword search. Offers both synchronous (real-time) and asynchronous (batch) modes. Use when needing to collect Indeed job listing data, company information, salary data, reviews, or search for jobs and companies programmatically.

- Skill: `buzzmatic/brightdata-indeed` (Agent Skill, multi-file: 4 files)
- Install (CLI): `npx skillmds@latest add buzzmatic/brightdata-indeed`
- Raw SKILL.md: https://api.skillmd.com/api/skills/buzzmatic/brightdata-indeed/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Product & Planning
- Author: Buzzmatic (https://skillmd.com/u/buzzmatic)
- Updated: 2026-09-22
- Page: https://skillmd.com/skills/buzzmatic/brightdata-indeed

---


# BrightData Indeed Scraper

Indeed data collection using BrightData's Datasets API. All operations save results to disk and return summaries to context.

## Quick Start

**Single Job Listing:**
```bash
python skills/brightdata-indeed/scripts/fetch.py \
  --endpoint jobs \
  --input "https://www.indeed.com/viewjob?jk=a4d97fa27223cc84"
```

**Job Search by Keyword:**
```bash
python skills/brightdata-indeed/scripts/fetch.py \
  --endpoint jobs-search \
  --country US \
  --domain indeed.com \
  --keyword "software engineer" \
  --location "New York, NY"
```

**Company Profile:**
```bash
python skills/brightdata-indeed/scripts/fetch.py \
  --endpoint companies \
  --input "https://www.indeed.com/cmp/Google"
```

## Available Endpoints

### Job Listings (Dataset: gd_l4dx9j9sscpvs7no2)

| Endpoint | Input Type | Description |
|----------|------------|-------------|
| `jobs` | Job URLs | Collect job listing details by URL |
| `jobs-search` | Keyword + Location | Discover jobs by search criteria |
| `jobs-by-company` | Company Jobs URLs | Discover jobs from company pages |

### Company Info (Dataset: gd_l7qekxkv2i7ve6hx1s)

| Endpoint | Input Type | Description |
|----------|------------|-------------|
| `companies` | Company URLs | Collect company profile data |
| `companies-list` | Browse URLs | Discover companies from browse pages |
| `companies-industry` | Industry + State | Discover companies by industry/state |
| `companies-search` | Keyword | Search companies by keyword |

## Parameters

### Common Parameters

| Parameter | Required | Default | Description |
|-----------|----------|---------|-------------|
| `--endpoint` | Yes | - | Endpoint type (see tables above) |
| `--input` | Conditional | - | URL or path to batch file |
| `--batch` | No | false | Enable batch mode for file inputs |
| `--mode` | No | sync | API mode: `sync` or `async` |

### Job Search Parameters (jobs-search)

| Parameter | Required | Description |
|-----------|----------|-------------|
| `--country` | Yes | Country code (US, DE, FR, etc.) |
| `--domain` | Yes | Indeed domain (indeed.com, fr.indeed.com) |
| `--keyword` | No | Search keyword (e.g., "software engineer") |
| `--location` | No | Location (e.g., "New York, NY") |
| `--date-posted` | No | Date filter (Last 24 hours, Last 7 days) |
| `--posted-by` | No | Posted by filter |
| `--location-radius` | No | Location radius |

### Company Industry Parameters (companies-industry)

| Parameter | Required | Description |
|-----------|----------|-------------|
| `--industry` | Yes | Industry name (e.g., "Airlines, Airports & Air Transportation") |
| `--state` | No | US state or region |

### Company Search Parameters (companies-search)

| Parameter | Required | Description |
|-----------|----------|-------------|
| `--keyword` | Yes | Company search keyword (e.g., "Tesla") |

## Usage Examples

### Job Listings

**Single job by URL:**
```bash
python skills/brightdata-indeed/scripts/fetch.py \
  --endpoint jobs \
  --input "https://www.indeed.com/viewjob?jk=a4d97fa27223cc84"
```

**Multiple jobs (comma-separated):**
```bash
python skills/brightdata-indeed/scripts/fetch.py \
  --endpoint jobs \
  --input "https://www.indeed.com/viewjob?jk=abc123,https://www.indeed.com/viewjob?jk=def456"
```

**Batch from file:**
```bash
python skills/brightdata-indeed/scripts/fetch.py \
  --endpoint jobs \
  --input job_urls.txt \
  --batch
```

### Job Search

**Basic search:**
```bash
python skills/brightdata-indeed/scripts/fetch.py \
  --endpoint jobs-search \
  --country US \
  --domain indeed.com \
  --keyword "data scientist" \
  --location "San Francisco"
```

**German job search:**
```bash
python skills/brightdata-indeed/scripts/fetch.py \
  --endpoint jobs-search \
  --country DE \
  --domain de.indeed.com \
  --keyword "softwareentwickler" \
  --location "Berlin"
```

**French job search:**
```bash
python skills/brightdata-indeed/scripts/fetch.py \
  --endpoint jobs-search \
  --country FR \
  --domain fr.indeed.com \
  --keyword "product manager" \
  --location "Paris"
```

### Jobs from Company

**Company jobs page:**
```bash
python skills/brightdata-indeed/scripts/fetch.py \
  --endpoint jobs-by-company \
  --input "https://www.indeed.com/cmp/Semrush/jobs"
```

### Company Information

**Single company:**
```bash
python skills/brightdata-indeed/scripts/fetch.py \
  --endpoint companies \
  --input "https://www.indeed.com/cmp/Google"
```

**Search companies by keyword:**
```bash
python skills/brightdata-indeed/scripts/fetch.py \
  --endpoint companies-search \
  --keyword "Tesla"
```

**Companies by industry:**
```bash
python skills/brightdata-indeed/scripts/fetch.py \
  --endpoint companies-industry \
  --industry "Drug & Health Stores" \
  --state "California"
```

## Batch Operations

### JSON Format
```json
{
  "urls": [
    "https://www.indeed.com/viewjob?jk=abc123",
    "https://www.indeed.com/viewjob?jk=def456"
  ]
}
```

### Job Search Batch
```json
{
  "searches": [
    {"country": "US", "domain": "indeed.com", "keyword_search": "software engineer", "location": "New York"},
    {"country": "DE", "domain": "de.indeed.com", "keyword_search": "developer", "location": "Berlin"},
    {"country": "FR", "domain": "fr.indeed.com", "keyword_search": "data scientist", "location": "Paris"}
  ]
}
```

## Async Mode

For large batches, use async mode:

```bash
# Submit async request
python skills/brightdata-indeed/scripts/fetch.py \
  --endpoint jobs \
  --input job_urls.json \
  --batch \
  --mode async

# Check status and retrieve results
python skills/brightdata-indeed/scripts/status.py \
  --snapshot-id <snapshot_id> \
  --save
```

## Output Format

```json
{
  "success": true,
  "endpoint": "jobs-search",
  "mode": "sync",
  "record_count": 25,
  "output_file": "output/brightdata_indeed_jobs_search_20250125T123456.json",
  "summary": "Successfully scraped 25/25 Indeed jobs-search",
  "stats": {
    "total_inputs": 1,
    "successful": 25,
    "failed": 0
  }
}
```

## Job Listing Output Fields

Key fields returned for job listings:
- `job_title` - Title of the job position
- `company_name` - Name of the hiring company
- `location` - Job location
- `salary_formatted` - Formatted salary range
- `job_type` - Employment type (full-time, part-time, etc.)
- `description_text` - Full job description
- `benefits` - Job benefits offered (array)
- `qualifications` - Required qualifications (array)
- `date_posted_parsed` - Standardized posting date

## Company Output Fields

Key fields returned for companies:
- `name` - Company name
- `description` - Company overview
- `website` - Official website
- `industry` - Industry classification
- `company_size` - Employee count range
- `revenue` - Revenue information
- `headquarters` - HQ location
- `reviews_count` - Number of reviews
- `salaries` - Salary information (object)
- `benefits` - Benefits offered (array)
- `work_happiness` - Employee satisfaction metrics (array)

## API Configuration

Requires `BRIGHTDATA_API_TOKEN` in `.env`:

```env
BRIGHTDATA_API_TOKEN=your_api_token_here
```

## Error Handling

Partial success is supported - if some inputs fail, successful ones are still saved:

```json
{
  "success": true,
  "stats": {
    "total_inputs": 10,
    "successful": 8,
    "failed": 2
  }
}
```

## Limitations

- Up to 1,000 jobs per input for job searches
- Rate limits depend on BrightData plan
- Average response time: ~2s per input
- Pricing: ~$0.0015 per record

