GCC Job Opportunities Scraper avatar

GCC Job Opportunities Scraper

Pricing

Pay per event

Go to Apify Store
GCC Job Opportunities Scraper

GCC Job Opportunities Scraper

Search GulfTalent and NaukriGulf by keyword and GCC country, then export normalized, source-attributed, deduplicated vacancies.

Pricing

Pay per event

Rating

0.0

(0)

Developer

Stas Persiianenko

Stas Persiianenko

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Share

Search GulfTalent and NaukriGulf in one run and export normalized GCC job opportunities across the United Arab Emirates, Saudi Arabia, Qatar, Kuwait, Bahrain, and Oman.

The Actor turns separate board searches into a source-attributed vacancy feed for recruiters, sales researchers, labor-market analysts, and data teams.

It accepts job titles, skills, or keywords; scopes every search to selected GCC countries; enriches public vacancy details; and conservatively deduplicates matching title–company–country records.

What does GCC Job Opportunities Scraper do?

Use it to:

  • search GulfTalent and NaukriGulf together;
  • select any combination of the six GCC countries;
  • run up to 10 job-title or skill queries;
  • normalize different source formats into one schema;
  • retain canonical source URLs and source job IDs;
  • merge conservative cross-board matches;
  • fetch descriptions and structured details when requested;
  • cap the final dataset from 1 to 1,000 unique vacancies;
  • export results as JSON, CSV, Excel, XML, or RSS through Apify;
  • schedule recurring GCC jobs monitoring without maintaining two scrapers.

Bayt and AI-generated labels are intentionally not included.

Who is it for?

GCC Job Opportunities Scraper is designed for teams that need repeatable regional vacancy data.

Recruiting and staffing teams

Build shortlists across two regional boards without reconciling two exports by hand.

Hiring-intelligence analysts

Compare vacancy demand by title, country, employer, date, and source over repeated runs.

B2B sales researchers

Identify companies advertising roles that may signal expansion, technology investment, or staffing needs.

Job-data and ETL teams

Feed normalized public vacancies into a warehouse, dashboard, spreadsheet, ATS review queue, or downstream matching service.

Researchers

Collect repeatable snapshots for GCC job openings, skills demand, and regional labor-market analysis.

Why aggregate GulfTalent and NaukriGulf?

Each source has its own search and record shape.

This Actor provides one input and one stable dataset contract while preserving source provenance.

Unlike a generic web crawler, it understands:

  • GulfTalent country-scoped title searches;
  • NaukriGulf keyword and location search pagination;
  • source job IDs and canonical vacancy links;
  • board-specific posting dates and detail fields;
  • GCC country codes;
  • conservative duplicate identity.

A row is never presented as an exact cross-board duplicate solely because titles look similar.

The merge key also uses employer and country.

Supported countries and sources

CountryInput codeGulfTalentNaukriGulf
United Arab EmiratesAEYesYes
Saudi ArabiaSAYesYes
QatarQAYesYes
KuwaitKWYesYes
BahrainBHYesYes
OmanOMYesYes

Supported sources values are:

  • gulftalent
  • naukrigulf

Select either board or both.

What GCC vacancy data can you extract?

FieldMeaning
jobIdStable normalized title–company–country identifier
titleVacancy title
companyEmployer or recruiting company when disclosed
countrySelected GCC country code
locationVisible city or location text
descriptionPlain-text public vacancy description when enriched
employmentTypeEmployment type when disclosed
workModeWorkplace, hybrid, or remote label when disclosed
experienceMin / experienceMaxStructured experience range when available
experienceTextSource-provided experience label
salaryMin / salaryMaxStructured salary range when disclosed
salaryCurrencyCurrency accompanying structured salary data
salaryTextSource-provided salary text
skillsStructured skill keywords when available
postedAtExact source posting date when available
postedTextVisible date label retained from the search result
urlCanonical primary vacancy URL
primarySourceSource used for the primary normalized record
sourcesEvery retained source match with source job ID and URL
matchedQueriesInput searches that produced the record
scrapedAtCollection timestamp

Unavailable source fields are returned as null or an empty array rather than invented.

  1. Open the Actor input page.
  2. Add one or more job titles, skills, or keywords under Job search queries.
  3. Select the GCC country markets.
  4. Select GulfTalent, NaukriGulf, or both.
  5. Choose the maximum number of unique vacancies.
  6. Keep Include vacancy details enabled for descriptions and richer fields.
  7. Disable details for a faster recurring scan when search-card fields are enough.
  8. Click Start.
  9. Open the default dataset to review, filter, or export the rows.

A practical first input is:

{
"queries": ["data analyst"],
"countries": ["AE", "SA"],
"sources": ["gulftalent", "naukrigulf"],
"maxItems": 20,
"includeDetails": true
}

Input parameters

queries

Required array of 1–10 non-empty strings.

Use job titles, technologies, skills, or hiring keywords such as:

  • data analyst
  • software engineer
  • finance manager
  • sales manager
  • registered nurse

Each value can contain up to 100 characters.

countries

Required list containing one or more supported GCC codes.

The default is AE and SA.

sources

Required list containing gulftalent, naukrigulf, or both.

The default includes both boards.

maxItems

Maximum unique records saved across the complete input.

Allowed range: 1–1,000.

This is an output cap, not a promise that every search has that many live vacancies.

includeDetails

When true, the Actor fetches public detail records for selected vacancies.

When false, it returns normalized search-card records and avoids the extra per-vacancy requests.

Output example

This shortened record comes from a real local run using data analyst, AE, and detail enrichment:

{
"jobId": "37b73a67f5c7e4078b1c1aa6",
"title": "Data Analyst",
"company": "Sembol Construction",
"country": "AE",
"location": "Abu Dhabi, UAE",
"description": "We are seeking a highly analytical Data Analyst / Industrial Engineer...",
"employmentType": "FULL_TIME",
"workMode": null,
"experienceMin": null,
"experienceMax": null,
"salaryMin": null,
"salaryMax": null,
"salaryCurrency": null,
"skills": [],
"postedAt": "2026-07-12T00:00:00+00:00",
"postedText": "12 Jul",
"url": "https://www.gulftalent.com/uae/jobs/data-analyst-606775",
"primarySource": "gulftalent",
"sources": [
{
"source": "gulftalent",
"sourceJobId": "606775",
"url": "https://www.gulftalent.com/uae/jobs/data-analyst-606775"
}
],
"matchedQueries": ["data analyst"],
"scrapedAt": "2026-08-16T06:21:47.798Z"
}

The live source can change or remove a vacancy after collection.

How deduplication works

The Actor first deduplicates by normalized vacancy identity.

The conservative cross-source key contains:

  1. normalized title;
  2. normalized company;
  3. GCC country.

When both boards produce the same key, the output keeps one primary record and adds both listings to sources.

Different employers, different countries, or materially different titles remain separate.

This reduces obvious duplicates without claiming uncertain matches.

How much does it cost to aggregate GCC job opportunities?

The Actor uses pay-per-event pricing:

  • one start event per run;
  • one item event per saved, normalized vacancy;
  • no separate event for detail enrichment.

Current source configuration uses a $0.001 start fee and these per-vacancy tier prices:

Apify tierPrice per vacancy
FREE$0.00138
BRONZE$0.00120
SILVER$0.000936
GOLD$0.00072
PLATINUM$0.00048
DIAMOND$0.000336

At the BRONZE rate, examples are approximately:

  • 10 saved vacancies: $0.013 total;
  • 25 saved vacancies: $0.031 total;
  • 100 saved vacancies: $0.121 total.

These examples include the one-time start event.

Actual Apify platform usage and proxy costs are operational costs to the Actor owner and are not separately billed as Actor events to the user.

Recurring monitoring and data workflows

Scheduled hiring-market snapshots

Schedule the Actor daily or weekly with stable input.

Store each run’s dataset ID and compare jobId, postedAt, and sources in your own workflow.

The Actor does not itself maintain cross-run history or send alerts.

Spreadsheet review

Export the default dataset as CSV or Excel.

Filter by country, company, source, or posting date.

Warehouse ingestion

Pull dataset items through the Apify API after each scheduled run.

Use jobId as the normalized identity and preserve sources for provenance.

Sales-research pipeline

Search role families associated with expansion, then join disclosed employer names to your existing company-enrichment process.

Candidate sourcing review

Search several skills or titles, retain canonical vacancy links, and review source requirements before outreach or application.

Run with the Apify API

Set APIFY_TOKEN in your environment.

cURL

curl -X POST \
"https://api.apify.com/v2/acts/automation-lab~gcc-job-listings-aggregator/runs?waitForFinish=300" \
-H "Authorization: Bearer $APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"queries": ["data analyst"],
"countries": ["AE", "SA"],
"sources": ["gulftalent", "naukrigulf"],
"maxItems": 20,
"includeDetails": true
}'

Fetch the resulting default dataset using the run’s defaultDatasetId.

JavaScript

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('automation-lab/gcc-job-listings-aggregator').call({
queries: ['software engineer'],
countries: ['AE'],
sources: ['gulftalent'],
maxItems: 50,
includeDetails: true,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Python

import os
from apify_client import ApifyClient
client = ApifyClient(os.environ['APIFY_TOKEN'])
run = client.actor('automation-lab/gcc-job-listings-aggregator').call(run_input={
'queries': ['finance manager', 'sales manager'],
'countries': ['AE', 'SA', 'QA', 'KW', 'BH', 'OM'],
'sources': ['gulftalent', 'naukrigulf'],
'maxItems': 100,
'includeDetails': False,
})
items = client.dataset(run['defaultDatasetId']).list_items().items
print(items)

Use with Apify MCP

Add the Actor to Claude Code:

claude mcp add --transport http apify \
"https://mcp.apify.com?tools=automation-lab/gcc-job-listings-aggregator"

Claude Desktop, Cursor, and VS Code setup

Use the same HTTP MCP server configuration in Claude Desktop, Cursor, or VS Code:

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com?tools=automation-lab/gcc-job-listings-aggregator"
}
}
}

Example prompts:

  • “Search GulfTalent and NaukriGulf for data analyst jobs in the UAE and Saudi Arabia. Return 30 enriched vacancies.”
  • “Export 20 GulfTalent software engineer jobs in the UAE with descriptions and source links.”
  • “Create a lightweight six-country feed for finance manager and sales manager openings without detail enrichment.”

Reliability, retries, and limits

The Actor uses lightweight HTTP/API contexts through Apify datacenter proxy sessions.

It does not launch a browser and does not enable an automatic residential fallback.

A blocked or transient source request is retried once with a fresh datacenter session.

If one selected source fails, other valid source/country/query scopes can still produce useful records.

If every selected search fails, the run fails instead of reporting a false empty result.

A valid search with no matching NaukriGulf records succeeds with an empty dataset.

Optional detail failures preserve the useful search-card record.

Source sites can change their public pages, APIs, availability, and data fields without notice.

Tips for useful results

  • Start with specific job titles rather than long natural-language sentences.
  • Use includeDetails: false for frequent broad snapshots.
  • Use includeDetails: true when descriptions, skills, or exact dates matter.
  • Keep the same input between scheduled snapshots for comparable results.
  • Select only the countries relevant to the workflow.
  • Use source-specific runs when diagnosing a board or comparing coverage.
  • Treat salary fields as optional because many employers do not publish salary data.
  • Follow each canonical URL to verify time-sensitive vacancy status.

Responsible use and legality

This Actor accesses public vacancy search and detail surfaces.

Public availability does not remove your responsibilities.

You should:

  • comply with applicable laws and source terms;
  • collect only data needed for a legitimate purpose;
  • respect intellectual-property and database rights;
  • avoid republishing full descriptions without permission;
  • protect personal data that may appear in public listings;
  • avoid discriminatory profiling or automated employment decisions;
  • honor deletion, correction, and retention obligations;
  • use reasonable schedules and result limits.

The Actor is a collection tool, not legal advice.

Troubleshooting and FAQ

Why did I receive fewer rows than maxItems?

maxItems is a cap.

The selected queries, countries, and sources may expose fewer live unique vacancies, or duplicates may merge.

Why is a field null?

The source did not disclose that field, the search card did not contain it, or optional detail enrichment was unavailable.

Why did the run fail instead of returning zero rows?

All selected source searches failed or returned an invalid upstream shape.

The Actor fails closed so a source outage is not mistaken for a genuine zero-result market.

Why are two similar jobs separate?

Deduplication is intentionally conservative.

Title, company, and country must normalize to the same key before records merge.

Does it include Bayt?

No.

The supported scope is GulfTalent and NaukriGulf.

Does it translate titles or add AI labels?

No.

All output comes from normalized public source fields.

Does it track new, changed, and expired jobs across runs?

Not internally.

Schedule repeated runs and compare stable jobId values in your database, automation, or dataset-diff workflow.

Does it require my own job-board account?

No.

It accesses public search and vacancy surfaces through Apify Proxy.

Summary

GCC Job Opportunities Scraper combines GulfTalent and NaukriGulf searches into one typed, source-attributed vacancy feed.

Use it for one-time GCC job search, recurring hiring-market snapshots, spreadsheet exports, and data-pipeline ingestion while retaining the canonical board evidence behind every row.