# Rigzone Scraper: Oil, Gas & Energy Jobs (`santamaria-automations/rigzone-us-scraper`) Actor

Extract global oil, gas and energy jobs from Rigzone (rigzone.com). Returns 30+ fields: title, employer, salary (day-rate or annual), city/state/country, industry segment, discipline, rotation, rig type, experience, education, certifications and employer profile.

- **URL**: https://apify.com/santamaria-automations/rigzone-us-scraper.md
- **Developed by:** [NanoScrape](https://apify.com/santamaria-automations) (community)
- **Categories:** Jobs, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 serp results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Rigzone Scraper: Oil, Gas & Energy Jobs

Extract global oil, gas, energy, offshore and renewables job listings from [Rigzone](https://www.rigzone.com), the highest-paying trades vertical for engineering, geoscience, drilling, subsea, HSE and marine roles. Coverage spans the US, UK North Sea, GCC, West Africa, Brazil, South East Asia and every other major hydrocarbon province.

### What it does

Given one or more search keywords (optionally with a country or city filter), or a direct SERP URL, the actor walks Rigzone search results, extracts each job card, and can optionally fetch the full detail page for the complete description, structured salary, industry segment, discipline, rotation pattern, rig type, water depth, experience years, education, required certifications and employer profile.

- Search by keyword (`drilling engineer`, `subsea installation`, `reservoir geologist`) or feed direct SERP URLs
- Filter by country, city or region (Houston, Aberdeen, Norway, GCC, and more)
- Filter by discipline (Engineering & Science, Drilling, Production, Marine, Geoscience, Health & Safety, Project Management) and employment type (Full-time, Contract, Rotational)
- Fast SERP mode returns core fields from the search page alone
- Full detail mode returns the complete job description, salary, education, experience, plus oil-and-gas-specific fields: industry segment, discipline, rotation pattern, rig type, water depth, offshore flag, required certifications (BOSIET, HUET, IWCF, WellSharp, TWIC, and more)
- Deep employer mode also resolves each unique employer's Rigzone featured-employer page for enriched about text and a list of the employer's other currently-open roles

### Sample output

```json
{
  "_type": "job",
  "id": "1286692",
  "title": "Senior Drilling Engineer",
  "company": "Saudi Aramco (ASC)",
  "company_logo_url": "https://images.rigzone.com/images/jobs/companylogos/14016_bg.png",
  "location": "Saudi Arabia",
  "country": "SA",
  "salary_currency": "USD",
  "salary_period": "year",
  "employment_type": "full-time",
  "industry_segment": "onshore",
  "discipline": "drilling",
  "skills": ["Drilling Engineering"],
  "rotation_pattern": null,
  "rig_type": null,
  "offshore": false,
  "experience_years_min": 9,
  "education_min": "Bachelor Degree",
  "certifications_required": [],
  "featured_employer": true,
  "description_snippet": "Provides sound drilling engineering methods and procedures to be used on assigned drilling problems...",
  "posted_at": "2026-05-20",
  "closing_date": "2029-02-12",
  "source_url": "https://www.rigzone.com/oil/jobs/postings/1286692_Senior_Drilling_Engineer",
  "source_platform": "rigzone.com",
  "apply_url": "https://www.rigzone.com/oil/jobs/postings/1286692_Senior_Drilling_Engineer",
  "search_query": "drilling engineer",
  "scraped_at": "2026-08-20T18:30:00Z",
  "company_about": "Aramco energizes the world economy. Aramco occupies a special position in the global energy industry...",
  "company_website": "https://www.saudiaramco.com",
  "company_profile_url": "https://www.rigzone.com/jobs/featured_employer.asp?e_id=14016",
  "company_active_jobs_count": 10
}
```

### Pricing

**$0.001 per actor start + $0.003 per SERP result + $0.005 per full detail result + $0.005 per unique employer resolved (only when `includeCompanyDetails` is on).**

Typical cost:

- **SERP mode**: about $3 per 1,000 jobs (title, employer, location, snippet, posted date, experience badge)
- **Full mode**: about $8 per 1,000 jobs (adds industry segment, discipline, rotation, rig type, water depth, full description, salary, education, experience, certifications)
- **Deep employer mode** (adds `includeCompanyDetails=true`): about $8 per 1,000 jobs + $0.005 per unique employer. Employers are deduplicated within a run, so 100 jobs from 40 different employers cost about $8.20, not $8.50.

You only pay for detail fetches that succeed. Failed fetches are not charged.

**New to Apify?** Every account gets a $5 free monthly platform credit, enough for around 1,600 SERP rows or around 600 full-detail rows on this actor before you commit to paying anything. Test extensively first.

### Input

| Field | Type | Description |
|---|---|---|
| `searchQueries` | array of strings | Keywords to search for (each runs as a separate search). Provide either this or `startUrls`. |
| `startUrls` | array of strings | Direct SERP URLs to crawl instead of building searches from keywords. Mutually exclusive with `searchQueries`. |
| `location` | string | Country or city filter (Houston, Aberdeen, Norway, GCC). Ignored when using `startUrls`. |
| `includeJobDetails` | boolean | Fetch each detail page for the full description, salary, industry segment, discipline, rotation, rig type, water depth, experience, education, certifications (default false). |
| `includeCompanyDetails` | boolean | Also resolve each unique employer's Rigzone featured-employer page for about text, website and active-jobs list. Implies `includeJobDetails=true`. Default false. |
| `discipline` | select | Optional discipline filter (Engineering and Science, Drilling, Production, Marine, Geoscience, and more). |
| `employmentType` | select | Full-time, Contract, Part-time, or Rotational. |
| `maxResults` | integer | Total cap across all keywords (default 25). |
| `maxResultsPerQuery` | integer | Cap per individual keyword (default 200). |
| `maxConcurrency` | integer | Parallel detail-page requests (default 4, max 20). |

### Output fields

**Core listing:** `_type`, `id`, `title`, `company`, `company_logo_url`, `location`, `location_city`, `location_state`, `country`, `source_url`, `apply_url`, `source_platform`, `scraped_at`, `featured_employer`.

**Salary:** `salary_min`, `salary_max`, `salary_currency`, `salary_period` (year, month, day, hour), `salary_text`.

**Oil and gas vertical fields (full mode):** `industry_segment` (offshore, onshore, refining, midstream, oilfield-services, renewables), `discipline` (drilling, completions, reservoir, production, subsea, geoscience, HSE, marine, and more), `rotation_pattern` (28/28, 14/14, and similar), `rig_type` (drillship, semi-submersible, jackup, FPSO, land, platform), `water_depth_ft`, `offshore` boolean, `experience_years_min`, `education_min`, `certifications_required` (BOSIET, HUET, IWCF, WellSharp, TWIC, OPITO, NEBOSH, and more), `skills`.

**Description:** `description_snippet` (SERP mode), `description_full` and `description_html` (full mode).

**Dates:** `posted_at`, `closing_date` (full mode).

**Employer profile (`includeCompanyDetails=true`):** `company_about`, `company_website`, `company_linkedin`, `company_profile_url`, `company_active_jobs_count`, `company_active_jobs` (array of `{title, job_url, description_snippet, location, salary_text}`).

### Use with AI Agents (MCP)

Connect this actor to any MCP-compatible AI client: Claude Desktop, Claude.ai, Cursor, VS Code, LangChain, LlamaIndex, or custom agents.

**Apify MCP server URL:**

`https://mcp.apify.com?tools=santamaria-automations/rigzone-us-scraper`

**Example prompt once connected:**

> "Use `rigzone-us-scraper` to find 20 subsea installation engineer roles in Houston, enable `includeCompanyDetails` so I get each employer's website and other open roles, and return a table with employer, title, salary, rotation, discipline, offshore."

Clients that support dynamic tool discovery (Claude.ai, VS Code) will receive the full input schema automatically.

### Why this scraper

- Rigzone is the highest-paying vertical trades board in the industry: median comp is 2 to 4 times a generalist board, day-rate contracts frequently clear $2,000 per day.
- Oil and gas jobs live in a dense vocabulary (rotation, water depth, jackup vs semi-sub, IWCF cert). This scraper extracts that vocabulary as first-class fields, not free-form text.
- The industry-segment classifier tags each row as offshore, onshore, refining, midstream, oilfield-services or renewables so downstream systems can slice by segment without regexing job titles.
- Employer profiles carry logo, about text, website and every currently-open role at that employer, turning a job feed into a lead-gen source for outbound campaigns to E\&P companies, service majors and drilling contractors.

### Common use cases

- Sourcing candidates for a drilling, subsea or reservoir role in the Permian, North Sea, Gulf of Mexico or GCC.
- Feeding a renewables candidate pipeline: filter for wind, hydrogen, carbon capture jobs and get people already fluent in offshore.
- Building a day-rate benchmark for contract oilfield roles: pull all rotational listings with `includeJobDetails=true` and analyze `salary_min`, `salary_max`, `salary_period=day`.
- Outbound lead-gen to E\&P majors and service companies: run with `includeCompanyDetails=true` for employer websites and every open role at each target.
- Monitoring layoffs / hiring cycles at specific operators: search their name as a keyword and re-run daily.

### Notes and limits

- Rigzone renders about 4 Featured Employer jobs per SERP page server-side; deeper non-featured listings load via JavaScript and are not returned by this HTTP-only scraper. The featured slice is the highest-signal subset (paid placements from real operators and majors) so this is usually the right trade-off for lead-gen and sourcing. Pagination continues to walk deeper pages, yielding several jobs per page across the total 950 or so per keyword.
- Rigzone caps a single search at around 950 results. Split queries by discipline or country to pull more.
- Some listings show salary as free text ("Competitive", "Negotiable", "DOE"). In those cases `salary_min` and `salary_max` are null and `salary_text` carries the phrase.
- Industry segment, discipline, rotation pattern, rig type and certifications populate best when `includeJobDetails=true`. On SERP-only mode we classify from title and snippet, which catches obvious cases but misses ones only mentioned in the full description.
- `certifications_required` is a positive-match scan against a known list. If a certification is described in unusual phrasing ("full HUET card", "current BOSIET"), it will still match, but bespoke internal certifications will not.
- `company_website` on the employer page is best-effort. Rigzone employer pages sometimes only link to the company LinkedIn, in which case we populate `company_linkedin` instead.
- Rotation patterns are extracted heuristically from any "N/N" pattern in title or description. If a role is 14 days on / 14 days off written as "two weeks on, two weeks off", the parser will not catch it.

### Related Actors

- [Indeed Scraper](https://apify.com/santamaria-automations/indeed-scraper) : global generalist job board coverage, useful for comparing oil and gas listings against the wider labour market.
- [BuiltIn Scraper](https://apify.com/santamaria-automations/builtin-scraper) : US tech job board, useful for renewables and energy transition roles that overlap with software and hardware.
- [Reed.co.uk Scraper](https://apify.com/santamaria-automations/reed-uk-scraper) : UK's largest general-purpose job board, complements Rigzone for UK North Sea coverage.
- [Website Email Scraper](https://apify.com/santamaria-automations/website-email-scraper) : find contact emails on employer websites, useful for outreach after sourcing.

### Support

For issues, feature requests, or filter combinations that don't behave as expected, please open an issue on the [Issues tab](https://apify.com/santamaria-automations/rigzone-us-scraper/issues) of this actor. We typically respond within 6 hours.

Contact: contact@nanoscrape.com

# Actor input Schema

## `searchQueries` (type: `array`):

One or more oil, gas or energy job titles to search for on rigzone.com (for example 'drilling engineer', 'subsea installation', 'reservoir geologist'). Each keyword runs as a separate search. Results are deduplicated by job ID. Leave blank if you supply startUrls instead.

## `startUrls` (type: `array`):

Direct SERP URLs to crawl instead of building searches from keywords. Example: https://www.rigzone.com/oil/jobs/search/?sk=subsea+engineer\&cn=Houston or any /oil/jobs/search/ URL. Mutually exclusive with searchQueries: provide one or the other. If both are set, startUrls wins and a warning is logged.

## `location` (type: `string`):

Country or city to filter results (for example 'United States', 'Houston', 'Aberdeen', 'Norway'). Applied to all search keywords. Ignored when you use startUrls.

## `includeJobDetails` (type: `boolean`):

Fetch each job's detail page for the full description, structured salary, industry segment, discipline, rotation pattern, rig type, water depth, experience years, education, required certifications and employer profile URL.

## `includeCompanyDetails` (type: `boolean`):

Also resolve each unique employer to its Rigzone featured-employer page for enriched about text, an active-jobs list and (when present) a company website. Adds one extra HTTP hop per unique employer (deduplicated within the run) and charges a separate company-detail-result event at $0.005 each. Implies includeJobDetails=true.

## `discipline` (type: `string`):

Optional discipline filter passed to Rigzone as the category. Leave empty to include all disciplines.

## `employmentType` (type: `string`):

Optional employment type filter. Rigzone uses FULL\_TIME, CONTRACT, PART\_TIME, or ROTATIONAL.

## `maxResults` (type: `integer`):

Total cap across all search keywords.

## `maxResultsPerQuery` (type: `integer`):

Maximum results per individual search keyword.

## `maxConcurrency` (type: `integer`):

Number of detail pages to fetch in parallel when full details are enabled.

## Actor input object example

```json
{
  "searchQueries": [
    "drilling engineer"
  ],
  "location": "Houston",
  "includeJobDetails": false,
  "includeCompanyDetails": false,
  "discipline": "",
  "employmentType": "",
  "maxResults": 5,
  "maxResultsPerQuery": 5,
  "maxConcurrency": 4
}
```

# Actor output Schema

## `jobListings` (type: `string`):

Dataset containing scraped Rigzone job listings. Each row includes job ID, title, employer (with logo, about text and other open roles when includeCompanyDetails is enabled), industry segment, discipline, rotation, rig type, water depth, salary, experience, education, certifications, description and location.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "searchQueries": [
        "drilling engineer"
    ],
    "includeJobDetails": false,
    "includeCompanyDetails": false,
    "maxResults": 5,
    "maxResultsPerQuery": 5,
    "maxConcurrency": 4
};

// Run the Actor and wait for it to finish
const run = await client.actor("santamaria-automations/rigzone-us-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "searchQueries": ["drilling engineer"],
    "includeJobDetails": False,
    "includeCompanyDetails": False,
    "maxResults": 5,
    "maxResultsPerQuery": 5,
    "maxConcurrency": 4,
}

# Run the Actor and wait for it to finish
run = client.actor("santamaria-automations/rigzone-us-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "searchQueries": [
    "drilling engineer"
  ],
  "includeJobDetails": false,
  "includeCompanyDetails": false,
  "maxResults": 5,
  "maxResultsPerQuery": 5,
  "maxConcurrency": 4
}' |
apify call santamaria-automations/rigzone-us-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,santamaria-automations/rigzone-us-scraper"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/Az4UxBotnHjNOIaAw/builds/KavBc3GKNbTiIGI4o/openapi.json
