Naukrigulf Scraper
Pricing
$0.80 / 1,000 results
Naukrigulf Scraper
Scrape public Naukrigulf jobs by keyword, location, search URL, or job URL. Export descriptions, salary, experience, employer details, and posting dates.
Pricing
$0.80 / 1,000 results
Rating
0.0
(0)
Developer
MLG Data
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
18 hours ago
Last modified
Categories
Share
Scrape Naukrigulf job listings by keyword, location, search URL, or direct job URL. Export Naukrigulf job data as JSON, CSV, or spreadsheet files, including descriptions, experience requirements, salary when disclosed, and a stable link to each posting. This actor is a practical Naukrigulf API alternative for repeatable searches and monitoring public vacancies.
The actor reads the same public search records that drive the job board. Each search result can be enriched with its public detail record. Results are flat, use consistent camelCase field names, and include null for fields the source does not disclose. Search and detail requests use the site's data endpoints, so there is no need to render every job page to collect the core data.
What data can you extract from Naukrigulf?
Standard output contains the fields below. Fields that depend on job details are populated when Fetch job details is enabled. A missing salary is represented as null; the salaryHidden flag indicates when the source explicitly hides compensation. Array fields are empty when the source has no values. The compact option returns a smaller subset for simple pipelines.
| Field | Description |
|---|---|
jobId | Stable numeric source job ID. |
jobKey | Source job ID for matching postings. |
title | Advertised job title. |
summary | Short search-result summary. |
company | Advertised employer name. |
companyId | Source employer ID. |
companyWebsite | Public employer website. |
companyLogo | Employer logo URL. |
companyLogoTopEmployer | Top-employer logo URL. |
companyType | Published employer category. |
location | Advertised location text. |
locationType | Workplace arrangement such as on-site. |
locationTypeKey | Machine-readable workplace arrangement. |
jobCountry | Country associated with the job. |
localities | Cities parsed from the detail record. |
description | Plain-text job description. |
descriptionHtml | Original job description HTML. |
desiredCandidate | Plain-text candidate requirements. |
desiredCandidateHtml | Original candidate requirements HTML. |
education | Education requirements. |
nationality | Advertised nationality requirement. |
gender | Advertised gender requirement. |
experienceMin | Minimum required years of experience. |
experienceMax | Maximum required years of experience. |
salaryMin | Minimum advertised compensation. |
salaryMax | Maximum advertised compensation. |
salaryCurrency | Compensation currency code. |
salaryHidden | Whether compensation is hidden by the source. |
salaryPeriod | Compensation period when supplied. |
employmentType | Employment arrangement. |
employmentTypeKey | Machine-readable employment arrangement. |
industry | Industry classification. |
functionalArea | Job function classification. |
vacancies | Advertised number of openings. |
keywords | Source job keywords. |
keywordsWhitelisted | Source highlighted keywords. |
jobHighlights | Key points shown on the listing. |
contactName | Public job contact name. |
contactDesignation | Public job contact role. |
contactCountry | Public job contact country. |
contactCity | Public job contact city. |
contactAddress | Public job contact address. |
contactEmail | Public job contact email when shown. |
contactEmailHidden | Whether the job contact email is hidden. |
contactWebsite | Public contact website. |
isTopEmployer | Source top-employer flag. |
isTopEmployerLite | Source compact top-employer flag. |
isFeaturedEmployer | Source featured-employer flag. |
isPremium | Source premium-posting flag. |
isWebJob | Source external web-job flag. |
isQuickWebJob | Source quick external-job flag. |
isFormBasedApply | Whether application uses a source form. |
isEasyApply | Source easy-apply flag. |
isConsultantJob | Whether a consultant posted the job. |
isConfidentialCompany | Whether the employer is confidential. |
isArchived | Source archived flag. |
isExpired | Whether the detail page marks the job expired. |
expiringSoon | Source expiry warning flag. |
recruiterActive | Whether the source marks the recruiter active. |
jobRedirection | Whether the application redirects externally. |
jobSource | Source posting category. |
jobType | Source job classification. |
referenceNumber | Employer reference number. |
postedAt | Posting time in UTC ISO format. |
url | Canonical job page URL. |
portalUrl | Canonical source job page URL. |
applyUrl | Public application URL or job page URL. |
searchQuery | Search term that discovered the job. |
detailFetched | Whether the detail endpoint was retrieved. |
contentQuality | Full detail or search-only content marker. |
scrapedAt | Time this record was collected in UTC. |
source | Source domain. |
The short summary comes from the search response, while description is plain text converted from the posting HTML. descriptionHtml preserves the source markup for applications that need structure. desiredCandidate and its HTML companion describe the requested profile when it is published. Salary amounts are the numeric values from the detail record; the currency and period are separate fields. The actor does not infer an undisclosed salary from a title, location, or market average.
How to scrape Naukrigulf jobs
- Enter one job keyword such as “software engineer.” Add a city or country if the search is too broad. A blank keyword browses the chosen location.
- Set Maximum results to the number of unique jobs you want. The actor reads 30 listings per search page and continues until it reaches the limit or the site's reported total.
- Keep Fetch job details enabled for compensation, candidate requirements, employment type, and contact fields. Turn it off for faster collection of titles, companies, locations, summaries, descriptions, and dates already present in search results.
- Run the actor and inspect the Jobs dataset. Download JSON or CSV, or connect the dataset to a spreadsheet workflow.
- Reuse the same input for a later snapshot. Compare records using
jobIdorjobKey; both contain the source's stable job number.
You can also paste a search URL containing Keywords and Location parameters into Search or job URLs. A canonical job URL containing -jid- can go in either URL list. The direct job path retrieves that posting without running a keyword search. Multiple keyword terms separated by commas are run as separate searches, and overlapping jobs are emitted once.
Input
| Parameter | Type | Default | Description |
|---|---|---|---|
query | string | empty | Keyword or comma-separated keyword searches. |
location | string | empty | City or country filter used with the keyword. |
startUrls | URL list | empty | Search-form URLs or canonical job links on the source domain. |
jobUrls | URL list | empty | Canonical direct job links with a -jid- number. |
maxResults | integer | 100 | Hard cap across all tasks; 0 removes the actor cap. |
datePosted | integer | empty | Source freshness filter: 1, 3, 7, 15, 30, or 60 days. |
experienceYears | integer | empty | Search for jobs accepting that many years of experience. |
sortBy | string | relevance | Use source relevance or newest-first order. |
includeDetails | boolean | true | Retrieve each public detail record. |
descriptionMaxLength | integer | 0 | Trim plain-text descriptions; 0 keeps full text. |
compact | boolean | false | Return only key identification, location, salary, date, and URL fields. |
proxyConfiguration | object | enabled | Network configuration for source requests. |
A realistic search input is:
{"query": "software engineer","location": "Dubai","maxResults": 35,"includeDetails": true,"sortBy": "relevance"}
The same input produced 35 jobs in the validation run. It made two search-page requests and enriched the emitted jobs individually. All 35 records had a job ID, title, company, location, description, posting date, URL, industry, and functional area. Other searches can have different fill rates because employers choose which fields to publish.
For a smaller recent snapshot, set datePosted to 7 and maxResults to 25. The source applies the freshness filter before returning results, so this can reduce both records and detail requests. For a direct posting, provide a canonical URL in jobUrls and set maxResults to 1. Direct URLs are useful when an earlier dataset already supplies the postings you want to refresh.
Output example
This shortened record comes from the 35-job validation run. Long descriptions and some null fields are omitted here for readability; standard output retains every documented field.
{"jobId": "250926000172","jobKey": "250926000172","title": "Software Engineer — Product Engineering (E-Commerce)","company": "Confidential Company","location": "Dubai - United Arab Emirates (UAE)","jobCountry": "United Arab Emirates (UAE)","localities": ["Dubai"],"description": "Requirements Core Engineering 6+ years of professional experience building production web applications","experienceMin": 6,"experienceMax": 8,"salaryMin": null,"salaryMax": null,"salaryCurrency": "AED","salaryHidden": true,"employmentType": "Full-time","industry": "Internet / E-commerce / Dotcom","functionalArea": "Engineering","vacancies": 1,"postedAt": "2026-09-25T12:47:56Z","url": "https://www.naukrigulf.com/software-engineer-product-engineering-jobs-in-dubai-uae-in-confidential-6-to-8-years-n-jid-250926000172","detailFetched": true,"source": "naukrigulf.com"}
The posting uses a confidential employer label. The actor keeps that label rather than guessing the employer's identity. The null salary amounts are likewise genuine gaps in the source, not parsing failures. When compensation is visible, salaryMin, salaryMax, salaryCurrency, and salaryPeriod remain separate so downstream calculations can choose the proper basis.
Use cases
- Recruitment research: Gather current roles for a defined skill and city, then compare experience bands, functional areas, and advertised locations. The source URL lets a reviewer open each original posting.
- Hiring trend snapshots: Run the same query on a schedule and compare stable job IDs across datasets. This reveals newly published roles and changes in the number of public vacancies.
- Location analysis: Compare city and country searches without manually paging through the site. Use
localitiesfor structured city labels when the detail record includes them. - Compensation review: Collect only salaries employers disclose and retain
salaryHiddento measure how much of a sample lacks numeric pay. Avoid treating missing pay as zero. - Category mapping: Combine
industry,functionalArea,employmentType, andkeywordsto classify openings for a report or searchable internal catalog. - Posting refresh: Feed known canonical job URLs back into
jobUrlsto retrieve their latest public detail record, including the current expiry flag when available.
How much does it cost to scrape Naukrigulf?
The current result charge is $0.80 per 1,000 jobs, or $0.0008 per emitted job. Platform usage is included in this result price. The 35-job validation input corresponds to $0.028 in result charges. A 100-job dataset costs $0.08, a 1,000-job dataset costs $0.80, and a 5,000-job dataset costs $4.00 at the current rate. These are result charges, not a promise that every search has that many public jobs.
The result cap protects your budget: the actor stops pushing records when it reaches maxResults, and the shared output layer stops if a run's event-charge limit is reached. Repeated or overlapping jobs are deduplicated by source job number before they are emitted. Detail enrichment increases the number of source requests but does not create a second result charge for a job. If you only need the search fields, turn off enrichment to reduce runtime.
Tips for best results
Use a specific keyword and location when the board returns a very broad result set. For example, a city name often narrows a country-wide search enough to finish sooner. Separate unrelated keywords with commas; each term becomes its own search task and duplicate IDs are merged. If you need different cities, provide separate search-form URLs, each with its own Keywords and Location values.
The site offers freshness filters of 1, 3, 7, 15, 30, and 60 days. Choose one of those exact values. Freshness is applied by the source before pagination. The experience filter accepts a single year value and searches for jobs that match it according to the source's own search behavior. Date sorting requests the source's newest-first order; relevance sorting leaves its ranking intact.
For full descriptions and compensation, leave includeDetails on. For a quick inventory or a simple list of links, disable it. The search result already contains titles, locations, short summaries, descriptions, experience ranges, job keywords, and dates. Some fields such as industry, candidate requirements, salary visibility, and work arrangement require the detail record.
Use descriptionMaxLength when plain-text descriptions will be stored in a narrow column or transmitted in compact messages. The field only limits description; descriptionHtml still contains the source markup. Choose compact if your destination only needs identity, title, company, location, date, URL, and available salary. Compact mode removes the other standard fields from each emitted record.
Limits
The board may change the number of matching jobs at any time. This actor follows the source's reported total and stops if a page has no records. It reads 30 listings per page. A broad search can therefore require many requests, particularly when detail enrichment is on. The current implementation does not split a single query into additional automatic date or location slices if the source imposes a hidden deep-page cap; narrow the search manually if later pages stop appearing.
The source hides pay on many postings. A salary flag can be true while numeric pay remains null. Contact names, emails, employer websites, education, nationality, and desired-candidate text are likewise optional. Some job cards are external web jobs; their application route may differ from a source-hosted form. The actor uses the published application link when present and otherwise supplies the canonical job page as applyUrl.
Search-page enrichment is best-effort for individual jobs. If one detail request fails, the actor still emits the search result with detailFetched: false and null detail-only fields. A failed search request stops that search and reports the source response. The actor uses public pages and endpoints; it does not sign in or retrieve private application data. A job that has been removed may return no direct-detail result.
Use in automated workflows
A scheduled run can produce a fresh dataset for a vacancy digest or dashboard. One useful instruction for a downstream workflow is: “Find engineering openings in Dubai from the past seven days, include descriptions, and keep the latest 100.” Another is: “Refresh these known job URLs and flag records whose detail response says the job is expired.” Those workflows can use the documented input names and compare jobId values across runs.
For an internal job catalog, store the source job number as the key and update the record on each run. Use postedAt as the publisher's timestamp, not as the time your workflow imported the record. A later run can contain a different title or description under the same ID. The actor itself does not maintain a cross-run change history or emit change classifications; comparison belongs in the receiving workflow.
FAQ
Do I need a login?
No. The actor retrieves public search and job-detail data. It does not access applicant accounts, saved searches, private profiles, or application submissions.
Do I need to configure a proxy?
The default network configuration works for the public endpoints tested during validation. If the source starts limiting a session, the shared fetch layer retries and can rotate its proxy session. You may change the proxy setting for your own deployment.
How fast is a run?
Runtime depends mainly on the number of requested jobs and whether detail enrichment is enabled. The 35-job validation run completed successfully. Search-only runs need far fewer source requests than detail-rich runs. Wide searches, source delays, and retries can extend runtime.
Can I monitor new jobs?
Yes. Schedule the same input, then compare stable job IDs and posting dates between datasets. The actor emits the current public snapshot. It does not label jobs as new, updated, or removed by itself.
Can I export to a spreadsheet?
Yes. The resulting dataset can be downloaded as JSON, CSV, or a spreadsheet file. Standard output is flat, so common tabular fields remain easy to filter. Arrays such as highlights and keywords can be retained in JSON when structure matters.
Why is a field empty?
The source often leaves compensation and contact details undisclosed. Some fields also require includeDetails: true. If a detail request fails for an individual posting, inspect detailFetched before treating null values as source omissions.
Is scraping these jobs allowed?
The actor accesses public job information. Review the source's terms and applicable privacy rules for your use case. Handle any published contact details responsibly and avoid unsolicited personal-data use.
Integrations
Run the actor on a schedule or start it from an API client. Retrieve dataset records through the dataset endpoint, deliver them to a webhook, or import a CSV export into a spreadsheet or reporting system. The stable job ID and canonical URL make it straightforward to join recurring snapshots and trace a record to its public posting.
Support
Open an issue on the Issues tab and include the input and an example job URL. We reply within 24 hours and add fields on request when the public source supplies them.