Naukrigulf Scraper avatar

Naukrigulf Scraper

Pricing

$0.80 / 1,000 results

Go to Apify Store
Naukrigulf Scraper

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

MLG Data

Maintained by Community

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

FieldDescription
jobIdStable numeric source job ID.
jobKeySource job ID for matching postings.
titleAdvertised job title.
summaryShort search-result summary.
companyAdvertised employer name.
companyIdSource employer ID.
companyWebsitePublic employer website.
companyLogoEmployer logo URL.
companyLogoTopEmployerTop-employer logo URL.
companyTypePublished employer category.
locationAdvertised location text.
locationTypeWorkplace arrangement such as on-site.
locationTypeKeyMachine-readable workplace arrangement.
jobCountryCountry associated with the job.
localitiesCities parsed from the detail record.
descriptionPlain-text job description.
descriptionHtmlOriginal job description HTML.
desiredCandidatePlain-text candidate requirements.
desiredCandidateHtmlOriginal candidate requirements HTML.
educationEducation requirements.
nationalityAdvertised nationality requirement.
genderAdvertised gender requirement.
experienceMinMinimum required years of experience.
experienceMaxMaximum required years of experience.
salaryMinMinimum advertised compensation.
salaryMaxMaximum advertised compensation.
salaryCurrencyCompensation currency code.
salaryHiddenWhether compensation is hidden by the source.
salaryPeriodCompensation period when supplied.
employmentTypeEmployment arrangement.
employmentTypeKeyMachine-readable employment arrangement.
industryIndustry classification.
functionalAreaJob function classification.
vacanciesAdvertised number of openings.
keywordsSource job keywords.
keywordsWhitelistedSource highlighted keywords.
jobHighlightsKey points shown on the listing.
contactNamePublic job contact name.
contactDesignationPublic job contact role.
contactCountryPublic job contact country.
contactCityPublic job contact city.
contactAddressPublic job contact address.
contactEmailPublic job contact email when shown.
contactEmailHiddenWhether the job contact email is hidden.
contactWebsitePublic contact website.
isTopEmployerSource top-employer flag.
isTopEmployerLiteSource compact top-employer flag.
isFeaturedEmployerSource featured-employer flag.
isPremiumSource premium-posting flag.
isWebJobSource external web-job flag.
isQuickWebJobSource quick external-job flag.
isFormBasedApplyWhether application uses a source form.
isEasyApplySource easy-apply flag.
isConsultantJobWhether a consultant posted the job.
isConfidentialCompanyWhether the employer is confidential.
isArchivedSource archived flag.
isExpiredWhether the detail page marks the job expired.
expiringSoonSource expiry warning flag.
recruiterActiveWhether the source marks the recruiter active.
jobRedirectionWhether the application redirects externally.
jobSourceSource posting category.
jobTypeSource job classification.
referenceNumberEmployer reference number.
postedAtPosting time in UTC ISO format.
urlCanonical job page URL.
portalUrlCanonical source job page URL.
applyUrlPublic application URL or job page URL.
searchQuerySearch term that discovered the job.
detailFetchedWhether the detail endpoint was retrieved.
contentQualityFull detail or search-only content marker.
scrapedAtTime this record was collected in UTC.
sourceSource 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

  1. 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.
  2. 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.
  3. 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.
  4. Run the actor and inspect the Jobs dataset. Download JSON or CSV, or connect the dataset to a spreadsheet workflow.
  5. Reuse the same input for a later snapshot. Compare records using jobId or jobKey; 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

ParameterTypeDefaultDescription
querystringemptyKeyword or comma-separated keyword searches.
locationstringemptyCity or country filter used with the keyword.
startUrlsURL listemptySearch-form URLs or canonical job links on the source domain.
jobUrlsURL listemptyCanonical direct job links with a -jid- number.
maxResultsinteger100Hard cap across all tasks; 0 removes the actor cap.
datePostedintegeremptySource freshness filter: 1, 3, 7, 15, 30, or 60 days.
experienceYearsintegeremptySearch for jobs accepting that many years of experience.
sortBystringrelevanceUse source relevance or newest-first order.
includeDetailsbooleantrueRetrieve each public detail record.
descriptionMaxLengthinteger0Trim plain-text descriptions; 0 keeps full text.
compactbooleanfalseReturn only key identification, location, salary, date, and URL fields.
proxyConfigurationobjectenabledNetwork 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 localities for structured city labels when the detail record includes them.
  • Compensation review: Collect only salaries employers disclose and retain salaryHidden to measure how much of a sample lacks numeric pay. Avoid treating missing pay as zero.
  • Category mapping: Combine industry, functionalArea, employmentType, and keywords to classify openings for a report or searchable internal catalog.
  • Posting refresh: Feed known canonical job URLs back into jobUrls to 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.