Tunisia Keejob Jobs Scraper
Pricing
from $3.00 / 1,000 results
Tunisia Keejob Jobs Scraper
Collect Keejob Tunisia job listings, employers, locations, contracts, salaries, requirements, and descriptions from the site's public feed.
Pricing
from $3.00 / 1,000 results
Rating
0.0
(0)
Developer
LIAICHI MUSTAPHA
Maintained by CommunityActor stats
0
Bookmarked
9
Total users
5
Monthly active users
12 days ago
Last modified
Categories
Security
Limited permissionsShare
Collect active Keejob job listings in Tunisia and nearby markets as a structured dataset. The Actor reads Keejob's public full listings index and, when requested, each listing's public Markdown detail page. It does not access candidate profiles, applications, or recruiter-only pages.
Features
- Retrieves the active-job index in one request, then fetches up to
maxItemsjob detail pages. - Extracts employer, location, governorate, country, contract type, work mode, salary, education, experience, languages, occupations, dates, and description when present.
- Keeps the source listing and Markdown URLs with every row for verification.
- Saves an index-only row marked
failedif a selected detail page cannot be read after retries. - Stores collection statistics in the default key-value store under
STATS.
Use cases
- Compare visible hiring activity by Tunisian governorate or employer.
- Study advertised contract types, experience requirements, and salary disclosure.
- Build a repeatable Keejob snapshot for a Tunisia employment report.
This is a snapshot of Keejob's active listings, not a census of all vacancies or workers in Tunisia. Some Keejob listings are outside Tunisia; filter country when reporting on the Tunisian market. A missing salary is not zero salary. Posting dates can change when an ad is updated, so the Actor preserves both the index and detail-page dates.
Input
{"maxItems": 100,"includeDetails": true,"maxConcurrency": 1}
| Field | Default | Meaning |
|---|---|---|
maxItems | 100 | Maximum unique active jobs to save, up to 2,000. |
includeDetails | true | Fetch each job's Markdown detail page. Set false for a quick index-only snapshot. |
maxConcurrency | 1 | Detail fetches in parallel, up to 3. Requests to Keejob are also paced. |
For a full current snapshot, set maxItems above the active listing count shown in the index. The available count changes over time.
Output
One dataset item per job. Optional fields are null or empty arrays when Keejob does not provide them. The detail_status is complete, index_only, or failed.
{"job_id": "246682","job_title": "Customer Experience Specialist (BO) - German","company_name": "GEVEKOM","company_url": "https://www.keejob.com/offres-emploi/entreprises/35467/gevekom-customer-services-tunisia-suarl/","location": "Tunis, Tunisie","governorate": "Tunis","country": "Tunisie","contract_types": ["CDI"],"work_mode": "Sur site","salary_raw": "1700 - 2400 TND Mois","salary_min_tnd": 1700,"salary_max_tnd": 2400,"salary_period": "month","experience_level": "Moins d'un an","education_level": "Formations professionnelles","languages": ["Anglais", "Allemand"],"occupations": ["Tele-Conseiller"],"posted_date": "2026-10-02","index_posted_date": "2026-10-02","expiration_date": "2026-10-11","listing_status": "Offre active","description_markdown": "About Us\n\nWe are gevekom...","detail_status": "complete","job_url": "https://www.keejob.com/offres-emploi/246682/customer-experience-specialist-bo-german/","source_detail_url": "https://www.keejob.com/offres-emploi/246682/customer-experience-specialist-bo-german.md","source_index_url": "https://www.keejob.com/llms-full.txt","scraped_at": "2026-10-02T14:31:15.000Z"}
The example shows the output shape; text and dates in live listings can change.
Local development
npm cinpm testapify run -i '{"maxItems":3,"includeDetails":true,"maxConcurrency":1}'
Local results appear in storage/datasets/default/; run metrics appear in storage/key_value_stores/default/STATS.json.
FAQ
Does it collect every job in Tunisia? No. It collects the active listings Keejob exposes at the time of the run, subject to the input limit.
Why are some fields empty? Employers may omit salary, work mode, or other details. The Actor does not infer missing values from job-description prose.
What happens if a detail page disappears? The Actor saves the index record with detail_status: "failed" and reports the failure count in STATS.
Can I compare snapshots? Yes. Run it on different dates and deduplicate by job_id; retain scraped_at and index_posted_date to keep collection timing explicit.