Djinni.co public jobs scraper
Pricing
from $3.99 / 1,000 results
Djinni.co public jobs scraper
Extracts public Djinni.co job listings from official search and detail pages with bounded requests. Access boundaries are reported without bypasses.
Pricing
from $3.99 / 1,000 results
Rating
0.0
(0)
Developer
Coding Frontned
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
What does this Actor do?
This Actor reads public pages on Djinni.co and emits source-backed job records. It can construct an official public search from keyword, location, experience, English-level, and contract filters, or inspect supplied public Djinni URLs. It prefers standards-based JobPosting JSON-LD, checks public embedded page state, and supplements structured data with explicit /jobs/... links.
The source host is restricted to djinni.co and its public subdomains. The Actor does not log in, use credentials, call private APIs, solve CAPTCHAs, bypass WAFs, evade rate limits, or use a proxy configuration. If the source is empty, challenged, unavailable, or returns no explicit job fields, the Actor records a minimal diagnostic instead of inventing a vacancy.
Why use this Actor?
Use it for a bounded snapshot of public Djinni developer vacancies in a research, hiring, or matching workflow. Normal rows have a stable source identifier or URL-derived ID, a public title, hiring company, provenance, and optional structured fields such as location, employment type, salary, dates, skills, and application links. Unpublished values are omitted. Nested contact evidence, raw HTML, inventory metadata, and crawler instrumentation are not emitted.
The run is deliberately predictable. maxItems, maxPages, and maxRequests cap work; response bytes and timeouts are bounded; transient statuses receive only a small retry budget; same-site next pages and duplicate listings are controlled; and optional detail requests share the global request budget.
How to use
Run with the default input for a public Djinni jobs search. Set keywords or location for a focused search, or pass a searchUrl pointing to a public Djinni URL. Keep includeDiagnostics enabled during setup so access conditions are visible. Set includeDetails to false when only listing pages are needed.
For a local run from this directory:
npm cinpm run checkapify run --purge --input-file .actor/input.json
Input
{"keywords": "Python","location": "Remote","maxItems": 20,"maxPages": 2,"maxRequests": 10,"includeDetails": true,"includeDiagnostics": true,"deduplicate": true,"timeoutSecs": 30,"maxRetries": 1}
searchUrl and startUrls are optional public URL inputs; sourceUrls, urls, and singular url are accepted aliases. The default search is https://djinni.co/jobs/. maxItems limits normal rows; maxPages limits search pagination; and maxRequests is the hard cap across listing and detail pages. requestDelayMs and maxResponseBytes provide additional polite and resource bounds. timeoutSecs also accepts requestTimeoutSecs or requestTimeoutMs aliases. userAgent is an optional transparent HTTP label, not an identity or access credential.
Output
A normal record resembles:
{"jobId": "dj-42","jobTitle": "Senior Python Engineer","company": "Example Labs","location": "Kyiv, UA","workplaceType": "remote","employmentType": "FULL_TIME","description": "Build public platform services.","datePosted": "2026-09-01T00:00:00.000Z","salaryCurrency": "USD","salaryMin": 60000,"salaryMax": 80000,"skills": ["Python", "Django"],"url": "https://djinni.co/jobs/dj-42/","canonicalUrl": "https://djinni.co/jobs/dj-42/","sourceUrl": "https://djinni.co/jobs/?keywords=Python","pageUrl": "https://djinni.co/jobs/?keywords=Python","sourceDomain": "djinni.co","pageNumber": 1,"position": 1,"scrapedAt": "2026-09-10T00:00:00.000Z"}
Download normal jobs and diagnostic rows from the Dataset tab. Normal job rows contain source-backed business and crawl-provenance fields; diagnostic rows use recordType: "diagnostic" and include diagnosticType, errorCode, sourceUrl, and scrapedAt. Internal extraction and transport metadata is not emitted in normal rows. OUTPUT_SUMMARY in the key-value store contains the status, request counts, page counts, retries, and bounded failure URLs.
Data fields
| Field | Meaning |
|---|---|
jobId, jobTitle, company | Public identity and hiring information. |
companyUrl, location, department | Public organization and role context. |
workplaceType, employmentType | Published work mode and contract type. |
description, skills | Public listing content. |
datePosted, salaryCurrency, salaryMin, salaryMax | Conservative structured fields. |
url, applyUrl | Public job and application links. |
canonicalUrl, sourceDomain | Stable URL identity and public source provenance. |
sourceUrl, pageUrl, pageNumber, position | Crawl provenance. |
scrapedAt | UTC normalization time. |
errorCode, error | Minimal access or no-data diagnostic fields. |
Pricing
Apify platform usage and any applicable plan charges are separate from this Actor. Actual cost depends on platform resources, run duration, request latency, and whether public detail pages are enabled. The Actor bounds its own request work but cannot guarantee a particular platform bill.
Tips
Start with one page, a small item limit, and diagnostics enabled. Use a modest requestDelayMs for repeated snapshots. Save results if you need history because public listings, availability, and source markup change over time. A source challenge is useful monitoring information and should not be treated as an empty market.
FAQ and disclaimers
Why did I receive source_challenge? Djinni may have returned a security challenge, HTTP 403/429, or another access boundary. The Actor stops within its limits and does not bypass it.
Does this Actor access private jobs or contact data? No. It reads public job fields only and does not emit contact harvesting fields.
Are missing values inferred? No. Optional values are included only when published in public structured data, embedded state, or a conservative public link.
Respect Djinni's terms, applicable law, robots guidance, and rate limits. This Actor is for lawful public-data use and does not guarantee completeness, freshness, availability, or continued compatibility with source markup.