{
  "data": {
    "id": "SElBqPIdKfqRS3XVo",
    "actId": "YMr49Cl56urVPbfzB",
    "userId": "tnBVjt3CXmcUrEE3L",
    "startedAt": "2026-11-12T19:20:55.205Z",
    "finishedAt": "2026-11-12T19:21:05.779Z",
    "status": "SUCCEEDED",
    "meta": {
      "origin": "CLI"
    },
    "stats": {
      "durationMillis": 10517,
      "runTimeSecs": 10.517,
      "computeUnits": 0.011685555555555555,
      "imageSizeBytes": 362703360
    },
    "options": {
      "useCache": true,
      "betaPackages": false,
      "memoryMbytes": 4096,
      "diskMbytes": 8192
    },
    "createdByOrganizationMemberUserId": "F2Aeb3gE2syjqz9xC",
    "exitCode": 0,
    "inputSchema": "{\n  \"title\": \"JobTeaser Jobs Scraper Input\",\n  \"description\": \"Search job offers on JobTeaser, or browse by category, location or company, and fetch specific offers by URL.\",\n  \"type\": \"object\",\n  \"schemaVersion\": 1,\n  \"properties\": {\n    \"mode\": {\n      \"title\": \"Mode\",\n      \"type\": \"string\",\n      \"description\": \"What to fetch.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"search\",\n        \"browseByCategory\",\n        \"browseByLocation\",\n        \"browseByCompany\",\n        \"bySearchUrl\",\n        \"byUrl\"\n      ],\n      \"enumTitles\": [\n        \"Search job offers\",\n        \"Browse by job category\",\n        \"Browse by location\",\n        \"Browse by company\",\n        \"Fetch a saved search URL\",\n        \"Fetch job offers by URL\"\n      ],\n      \"default\": \"search\",\n      \"prefill\": \"search\"\n    },\n    \"searchQuery\": {\n      \"title\": \"Search query\",\n      \"type\": \"string\",\n      \"description\": \"Free-text query matched against job title, company and keywords (mode=search).\",\n      \"editor\": \"textfield\",\n      \"default\": \"developer\",\n      \"prefill\": \"developer\"\n    },\n    \"jobCategory\": {\n      \"title\": \"Job category (mode=browseByCategory)\",\n      \"type\": \"string\",\n      \"description\": \"JobTeaser position category.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"Architecture & Urban Planning\",\n        \"Civil Engineering & Structures\",\n        \"Energy, Materials & Mechanical engineering\",\n        \"Engineering\",\n        \"Industrial Design & Engineering\",\n        \"Technology\",\n        \"Communication, PR & Events\",\n        \"Customer service\",\n        \"Management, Consulting & Strategy\",\n        \"Marketing & Webmarketing\",\n        \"Purchasing\",\n        \"Retail\",\n        \"Sales & Business Development\",\n        \"Actuarial\",\n        \"Asset Management\",\n        \"Audit\",\n        \"Corporate Finance\",\n        \"Economics\",\n        \"Financial Services\",\n        \"Insurance\",\n        \"Management Control and Accounting\",\n        \"Admin\",\n        \"Corporate law\",\n        \"Human Resources\",\n        \"Security & Politics\",\n        \"Social Law\",\n        \"Tax law\",\n        \"Electronics & Signal Processing\",\n        \"IT Project, Data & Product Management\",\n        \"Infrastructures, Networks & Telecom\",\n        \"Programming\",\n        \"Web Design & Usability\",\n        \"Agronomy & Biology\",\n        \"Biochemistry & Molecular Biology\",\n        \"Biomedical Sciences\",\n        \"Chemistry & Processes\",\n        \"Environment & Sustainable Development\",\n        \"Geography\",\n        \"Healthcare and Medicine\",\n        \"Laboratory / Analytics\",\n        \"Pharmaceutical Research & Biotechnology\",\n        \"Research & Development\",\n        \"Statistics, Data Analytics & Applied Maths\",\n        \"Construction\",\n        \"Logistics & Supply Chain\",\n        \"Production & Operations\",\n        \"Quality & Maintenance\",\n        \"Culture and the arts\",\n        \"Design & Creative\",\n        \"History / Heritage\",\n        \"Media\",\n        \"Tourism, Hospitality & Food services\",\n        \"Medicine\",\n        \"Odontologist\",\n        \"Paramedical & Care\",\n        \"Pharmacy\",\n        \"Social / Personal & Child care\",\n        \"Sports\",\n        \"Education & Training\",\n        \"Journalism & Publishing\"\n      ],\n      \"enumTitles\": [\n        \"Architecture & Urban Planning\",\n        \"Civil Engineering & Structures\",\n        \"Energy, Materials & Mechanical engineering\",\n        \"Engineering\",\n        \"Industrial Design & Engineering\",\n        \"Technology\",\n        \"Communication, PR & Events\",\n        \"Customer service\",\n        \"Management, Consulting & Strategy\",\n        \"Marketing & Webmarketing\",\n        \"Purchasing\",\n        \"Retail\",\n        \"Sales & Business Development\",\n        \"Actuarial\",\n        \"Asset Management\",\n        \"Audit\",\n        \"Corporate Finance\",\n        \"Economics\",\n        \"Financial Services\",\n        \"Insurance\",\n        \"Management Control and Accounting\",\n        \"Admin\",\n        \"Corporate law\",\n        \"Human Resources\",\n        \"Security & Politics\",\n        \"Social Law\",\n        \"Tax law\",\n        \"Electronics & Signal Processing\",\n        \"IT Project, Data & Product Management\",\n        \"Infrastructures, Networks & Telecom\",\n        \"Programming\",\n        \"Web Design & Usability\",\n        \"Agronomy & Biology\",\n        \"Biochemistry & Molecular Biology\",\n        \"Biomedical Sciences\",\n        \"Chemistry & Processes\",\n        \"Environment & Sustainable Development\",\n        \"Geography\",\n        \"Healthcare and Medicine\",\n        \"Laboratory / Analytics\",\n        \"Pharmaceutical Research & Biotechnology\",\n        \"Research & Development\",\n        \"Statistics, Data Analytics & Applied Maths\",\n        \"Construction\",\n        \"Logistics & Supply Chain\",\n        \"Production & Operations\",\n        \"Quality & Maintenance\",\n        \"Culture and the arts\",\n        \"Design & Creative\",\n        \"History / Heritage\",\n        \"Media\",\n        \"Tourism, Hospitality & Food services\",\n        \"Medicine\",\n        \"Odontologist\",\n        \"Paramedical & Care\",\n        \"Pharmacy\",\n        \"Social / Personal & Child care\",\n        \"Sports\",\n        \"Education & Training\",\n        \"Journalism & Publishing\"\n      ]\n    },\n    \"location\": {\n      \"title\": \"Location (mode=browseByLocation)\",\n      \"type\": \"string\",\n      \"description\": \"City, region or country, e.g. `Paris`, `Lyon`, `Germany`.\",\n      \"editor\": \"textfield\"\n    },\n    \"companySlug\": {\n      \"title\": \"Company slug (mode=browseByCompany)\",\n      \"type\": \"string\",\n      \"description\": \"JobTeaser company slug, e.g. `capgemini`, `ey-gmbh-co-kg-wirtschaftspruefungsgesellschaft`.\",\n      \"editor\": \"textfield\"\n    },\n    \"jobUrls\": {\n      \"title\": \"Job URLs (mode=byUrl)\",\n      \"type\": \"array\",\n      \"description\": \"Full JobTeaser job offer URLs, e.g. `https://www.jobteaser.com/en/job-offers/23281807-bdb4-4ec1-ad4c-8d50cff7efc9-capgemini-lead-data-engineer`.\",\n      \"editor\": \"stringList\",\n      \"default\": [],\n      \"prefill\": []\n    },\n    \"searchUrls\": {\n      \"title\": \"Search URLs (mode=bySearchUrl)\",\n      \"type\": \"array\",\n      \"description\": \"JobTeaser search or company listing URLs in any locale, e.g. `https://www.jobteaser.com/en/job-offers?q=developer`, `https://www.jobteaser.com/fr/job-offers?q=developpeur` or `https://www.jobteaser.com/en/companies/capgemini/job-offers`. Pagination is automatic.\",\n      \"editor\": \"stringList\",\n      \"default\": [],\n      \"prefill\": []\n    },\n    \"contractType\": {\n      \"title\": \"Contract type\",\n      \"type\": \"string\",\n      \"description\": \"Only keep offers with this contract type.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"internship\",\n        \"alternating\",\n        \"cdd\",\n        \"cdi\",\n        \"graduate_program\",\n        \"vie\",\n        \"part_time\",\n        \"thesis\",\n        \"freelance\",\n        \"master_thesis\",\n        \"industry_master_job\"\n      ],\n      \"enumTitles\": [\n        \"Internship\",\n        \"Apprenticeship\",\n        \"Fixed-term Position\",\n        \"Full time Position\",\n        \"Graduate Programme / Job Rotation Programme\",\n        \"International Graduate Business Placements (VIE)\",\n        \"Part-time / Student job\",\n        \"Research / Doctorate\",\n        \"Freelance / Independent\",\n        \"Bachelor or Master Thesis\",\n        \"Industry Master Job\"\n      ]\n    },\n    \"contractDurationMonths\": {\n      \"title\": \"Contract duration\",\n      \"type\": \"string\",\n      \"description\": \"Maximum contract duration bucket.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"3\",\n        \"6\",\n        \"9\",\n        \"12\",\n        \"18\",\n        \"24\",\n        \"36\"\n      ],\n      \"enumTitles\": [\n        \"1 - 3 months\",\n        \"4 - 6 months\",\n        \"7 - 9 months\",\n        \"10 - 12 months\",\n        \"13 - 18 months\",\n        \"19 - 24 months\",\n        \"25 - 48+ months\"\n      ]\n    },\n    \"jobLocale\": {\n      \"title\": \"Offer language\",\n      \"type\": \"string\",\n      \"description\": \"Only keep offers published in this language.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"fr\",\n        \"en\",\n        \"es\",\n        \"de\",\n        \"da\",\n        \"sv\",\n        \"ca\",\n        \"cs\",\n        \"fi\",\n        \"gl\",\n        \"it\",\n        \"no\",\n        \"nl\",\n        \"pl\",\n        \"pt\"\n      ],\n      \"enumTitles\": [\n        \"French\",\n        \"English\",\n        \"Spanish\",\n        \"German\",\n        \"Danish\",\n        \"Swedish\",\n        \"Catalan\",\n        \"Czech\",\n        \"Finnish\",\n        \"Galician\",\n        \"Italian\",\n        \"Norwegian\",\n        \"Dutch\",\n        \"Polish\",\n        \"Portuguese\"\n      ]\n    },\n    \"workExperienceCode\": {\n      \"title\": \"Work experience\",\n      \"type\": \"string\",\n      \"description\": \"Only keep offers for this experience level.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"young_graduate\",\n        \"three_to_five_years\",\n        \"six_to_ten_years\",\n        \"more_than_ten_years\"\n      ],\n      \"enumTitles\": [\n        \"Student / Recent Graduate\",\n        \"3 to 5 years\",\n        \"6 to 10 years\",\n        \"More than 10 years\"\n      ]\n    },\n    \"studyLevel\": {\n      \"title\": \"Level of study\",\n      \"type\": \"string\",\n      \"description\": \"Only keep offers requiring this level of study.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"1\",\n        \"6\",\n        \"2\",\n        \"3\",\n        \"4\",\n        \"5\"\n      ],\n      \"enumTitles\": [\n        \"No level prerequired\",\n        \"Secondary education, High school level\",\n        \"Vocational / Under-bachelor / Short-cycle higher education\",\n        \"Bachelor level or equivalent\",\n        \"Master level or equivalent\",\n        \"Doctorate\"\n      ]\n    },\n    \"remoteType\": {\n      \"title\": \"Remote work\",\n      \"type\": \"string\",\n      \"description\": \"Only keep offers with this remote policy.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"remote_partial\",\n        \"remote_full\"\n      ],\n      \"enumTitles\": [\n        \"Remote work occasionally allowed\",\n        \"Full remote work allowed\"\n      ]\n    },\n    \"companySector\": {\n      \"title\": \"Company sector\",\n      \"type\": \"string\",\n      \"description\": \"Only keep offers from companies in this sector.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"audit\",\n        \"consultancy\",\n        \"law\",\n        \"management_consultancy\",\n        \"accounting_services\",\n        \"banking_finance\",\n        \"insurance\",\n        \"real_estate\",\n        \"building_planning\",\n        \"architecture\",\n        \"luxury\",\n        \"retail\",\n        \"consumer_goods\",\n        \"energy_utilities\",\n        \"environment\",\n        \"agribusiness\",\n        \"aerospace\",\n        \"automotive\",\n        \"chemistry\",\n        \"defense\",\n        \"electronics\",\n        \"materials\",\n        \"other_industries\",\n        \"agriculture\",\n        \"maritime\",\n        \"mechanical_engineering\",\n        \"it_consultancy_it\",\n        \"telecoms\",\n        \"cosmetics\",\n        \"medicine_pharmaceuticals_health\",\n        \"recruitment_training\",\n        \"catering\",\n        \"transport_logistics\",\n        \"other_services_to_individuals_and_businesses\",\n        \"r_d\",\n        \"engineering\",\n        \"digital_e_commerce\",\n        \"media_publishing\",\n        \"communication_advertising\",\n        \"public_education\",\n        \"social_ngo\",\n        \"tourism_hospitality\",\n        \"leisure_culture_sports\",\n        \"other_category\"\n      ],\n      \"enumTitles\": [\n        \"Audit\",\n        \"Consulting\",\n        \"Legal\",\n        \"Management Consulting\",\n        \"Accounting Services\",\n        \"Banking / Finance\",\n        \"Insurance\",\n        \"Real Estate\",\n        \"Building / Planning\",\n        \"Architecture / Design\",\n        \"Luxury / Fashion\",\n        \"Retail\",\n        \"Consumer Goods\",\n        \"Energy / Utilities / Oil & Gas\",\n        \"Environment\",\n        \"Food & Beverage\",\n        \"Aerospace\",\n        \"Automotive\",\n        \"Chemistry\",\n        \"Defense\",\n        \"Electronics\",\n        \"Materials\",\n        \"Other Industries\",\n        \"Agriculture / Forest industry\",\n        \"Maritime / Railway\",\n        \"Mechanical Engineering\",\n        \"IT / IT Consulting / Software\",\n        \"Telecoms\",\n        \"Cosmetics\",\n        \"Medicine / Pharmaceuticals / Health\",\n        \"Recruitment / Training\",\n        \"Catering\",\n        \"Transport / Logistics\",\n        \"Other services to individuals and businesses\",\n        \"R&D / Design\",\n        \"Engineering\",\n        \"Digital / E-commerce\",\n        \"Media / Publishing\",\n        \"Communication / Advertising\",\n        \"Public / Government / Education / Armed Forces\",\n        \"Social / NGO / Charity\",\n        \"Events / Tourism / Hospitality\",\n        \"Leisure / Culture / Sports\",\n        \"Other\"\n      ]\n    },\n    \"companyBusinessType\": {\n      \"title\": \"Company business type\",\n      \"type\": \"string\",\n      \"description\": \"Only keep offers from companies of this size/type.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"large\",\n        \"startup\",\n        \"sme\",\n        \"ngo_public_lab\",\n        \"collective\"\n      ],\n      \"enumTitles\": [\n        \"Large company\",\n        \"Start-up\",\n        \"SME\",\n        \"Government / Charity / Public Institution / Other\",\n        \"Collective\"\n      ]\n    },\n    \"startDate\": {\n      \"title\": \"Start date\",\n      \"type\": \"string\",\n      \"description\": \"Only keep offers starting on or after this month. Use `0` for \\\"as soon as possible\\\", or `YYYY_MM` (e.g. `2027_01`). JobTeaser rolls this list forward every month, so the current site options are validated at run time.\",\n      \"editor\": \"textfield\",\n      \"pattern\": \"^(0|[0-9]{4}_[0-9]{2})$\"\n    },\n    \"sortBy\": {\n      \"title\": \"Sort order\",\n      \"type\": \"string\",\n      \"description\": \"How to order the results.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"relevance\",\n        \"date\"\n      ],\n      \"enumTitles\": [\n        \"By relevance\",\n        \"By date (newest first)\"\n      ],\n      \"default\": \"relevance\",\n      \"prefill\": \"relevance\"\n    },\n    \"simplifiedApplicationOnly\": {\n      \"title\": \"Simplified application only\",\n      \"type\": \"boolean\",\n      \"description\": \"Only keep offers that accept a simplified (one-click) application.\",\n      \"default\": false,\n      \"prefill\": false\n    },\n    \"includeDescription\": {\n      \"title\": \"Include full description\",\n      \"type\": \"boolean\",\n      \"description\": \"Fetch each offer's detail page to include the full description and extra fields. Slower but richer.\",\n      \"default\": false,\n      \"prefill\": false\n    },\n    \"maxItems\": {\n      \"title\": \"Max items\",\n      \"type\": \"integer\",\n      \"description\": \"Hard cap on emitted records.\",\n      \"minimum\": 1,\n      \"maximum\": 1000,\n      \"default\": 50,\n      \"prefill\": 5\n    },\n    \"proxyConfiguration\": {\n      \"title\": \"Proxy configuration\",\n      \"type\": \"object\",\n      \"description\": \"Optional proxy used only when JobTeaser blocks direct requests (403/429).\",\n      \"editor\": \"proxy\",\n      \"prefill\": {\n        \"useApifyProxy\": true\n      }\n    }\n  },\n  \"required\": [\n    \"mode\"\n  ]\n}",
    "readme": "# JobTeaser Graduate & Internship Listings Finder\n\nPull job, internship, and apprenticeship offers from JobTeaser — a job board aimed at students, graduates, and early-career professionals across Europe. Search by keyword, browse by category, location, or company, or fetch specific offers by URL.\n\n## What this actor does\n\n- **Six modes:** `search`, `browseByCategory`, `browseByLocation`, `browseByCompany`, `bySearchUrl`, `byUrl`\n- **60+ job categories** (Programming, Marketing, Finance, Engineering, HR, …) as a dropdown\n- **11 contract types** (Internship, Apprenticeship, Full time, VIE, Graduate Programme, …)\n- **Location search** resolved to real cities via geocoding (Paris, Lyon, Berlin, …); without a keyword it returns every offer in that area\n- **Company pages:** all offers from any JobTeaser company profile\n- **Filters:** experience level, study level, remote policy, company sector and size, offer language, start date, simplified application\n- **Sorting:** by relevance or newest first\n- **Full descriptions and structured details** (optional): fetches each offer's detail page for the complete HTML description, salary range, publication and deadline dates, and company profile\n- **No account, cookies, or API key needed**; empty fields are omitted\n\n## Output per job\n\nEvery record carries this base set, from the search/browse results list:\n\n- `jobId` — JobTeaser offer UUID\n- `title`\n- `companyName`, `companyLogoUrl` — when a logo is shown on the listing card\n- `locationText`\n- `contractText`\n- `isJobOfTheWeek` — only present when the listing carries that badge\n- `sourceUrl`\n- `recordType: \"job\"`, `scrapedAt`\n\nThe following are only added when a detail page is fetched — automatically in `mode=byUrl`, or in the other modes when `includeDescription: true` is set:\n\n- `contractType`, `contractDurationMonths` — parsed from the offer and its contract text\n- `startDateText`, `wageText`, `remoteText`\n- `applicationDeadlineText`, `studyLevelText`, `jobCategoryText`\n- `publishedDateText` and `publishedDate` (ISO 8601), `applicationDeadline` (ISO 8601)\n- `salaryCurrency`, `salaryMin`, `salaryMax`, `salaryPeriod` — when the employer publishes a range\n- `educationRequirement`, `directApply`, `jobImmediateStart`\n- `companyBusinessText`, `companyOverview` — company size/type and blurb\n- `companyLogoUrl` — also resolved from the detail page in `mode=byUrl`\n- `descriptionHtml` — full offer description\n\n## Input\n\n| Field | Type | Default | Description |\n|---|---|---|---|\n| `mode` | string | `search` | `search` / `browseByCategory` / `browseByLocation` / `browseByCompany` / `bySearchUrl` / `byUrl` |\n| `searchQuery` | string | `developer` | Free-text query (mode=search) |\n| `jobCategory` | string | – | Category dropdown, 60+ options (mode=browseByCategory) |\n| `location` | string | – | City / region / country (mode=browseByLocation) |\n| `companySlug` | string | – | Company slug (mode=browseByCompany) |\n| `jobUrls` | array | – | Full offer URLs (mode=byUrl) |\n| `searchUrls` | array | – | Search/browse listing URLs (mode=bySearchUrl) |\n| `contractType` | string | – | `internship`, `cdi`, `cdd`, `part_time`, … |\n| `contractDurationMonths` | string | – | `3`, `6`, `12`, `24`, `36` |\n| `jobLocale` | string | – | `fr`, `en`, `de`, `es`, … |\n| `workExperienceCode` | string | – | `young_graduate`, `three_to_five_years`, … |\n| `studyLevel` | string | – | `1`–`6` study-level buckets |\n| `remoteType` | string | – | `remote_partial`, `remote_full` |\n| `companySector` | string | – | 40+ sectors |\n| `companyBusinessType` | string | – | `large`, `startup`, `sme`, … |\n| `startDate` | string | – | `0` (as soon as possible) or `YYYY_MM` start month |\n| `sortBy` | string | `relevance` | `relevance` or `date` (newest first) |\n| `simplifiedApplicationOnly` | bool | `false` | Only offers with a simplified application |\n| `includeDescription` | bool | `false` | Fetch detail pages for full descriptions and structured detail fields |\n| `proxyConfiguration` | object | – | Optional proxy used only when JobTeaser blocks direct requests (403/429) |\n| `maxItems` | int | `50` | Hard cap (1–1000) |\n\n### Example: keyword search\n\n```json\n{\n  \"mode\": \"search\",\n  \"searchQuery\": \"data engineer\",\n  \"contractType\": \"cdi\",\n  \"maxItems\": 20\n}\n```\n\n### Example: browse a category\n\n```json\n{\n  \"mode\": \"browseByCategory\",\n  \"jobCategory\": \"Programming\",\n  \"includeDescription\": true,\n  \"maxItems\": 25\n}\n```\n\n### Example: internships in Paris\n\n```json\n{\n  \"mode\": \"browseByLocation\",\n  \"location\": \"Paris\",\n  \"contractType\": \"internship\",\n  \"maxItems\": 30\n}\n```\n\n### Example: a saved search URL\n\n```json\n{\n  \"mode\": \"bySearchUrl\",\n  \"searchUrls\": [\"https://www.jobteaser.com/en/job-offers?q=data%20engineer&contract=internship\"],\n  \"maxItems\": 40\n}\n```\n\nAny locale path works (`/en/`, `/fr/`, `/de/`, …) for both job-search and company listing URLs.\n\n### Example: all offers from a company\n\n```json\n{\n  \"mode\": \"browseByCompany\",\n  \"companySlug\": \"capgemini\",\n  \"maxItems\": 50\n}\n```\n\n## Use cases\n\n- **Graduate recruiters** — monitor what top employers post for students and graduates\n- **University career services** — collect internship and apprenticeship offers by category\n- **Job aggregators** — ingest structured early-career listings at scale\n- **Talent analytics** — track contract types, start dates and salary ranges over time\n- **Competitive intelligence** — watch hiring signals across company profiles\n\n## FAQ\n\n**What is JobTeaser?**  A career platform used by 1,500+ schools and 100k+ employers across Europe to publish jobs, internships and apprenticeships for students and graduates.\n\n**Does this need an account?**  No. All browsing is public; applying requires an account on JobTeaser, which is outside the scope of this actor.\n\n**Do I need a proxy?**  No. The actor starts with direct requests and automatically switches its own proxy when JobTeaser challenges the datacenter IP. You never have to configure one.\n\n**Where do the categories come from?**  Directly from JobTeaser's own filter taxonomy (position categories, contract types, experience levels, study levels, sectors).\n\n**How does location search work?**  The location text is geocoded (city / region / country), then the actor builds JobTeaser's location filter with the correct coordinates and radius.\n\n**Why is `descriptionHtml` sometimes missing?**  Descriptions live on each offer's detail page. `mode=byUrl` fetches it automatically; for the other modes, set `includeDescription: true` to fetch it too (adds one request per offer).\n\n**How fresh is the data?**  Search and detail pages reflect live listings; with `includeDescription` (or `mode=byUrl`) every record carries an ISO `publishedDate` and `publishedDateText`.\n\n**Why isn't the date sort perfectly ordered?**  JobTeaser pins \"Job of the Week\" cards above the sorted results. All other rows follow newest-first when `sortBy` is `date`.\n\n**How many offers can one run return?**  Up to 1000 records per run, set by `maxItems`. JobTeaser shows at most 50 result pages (about 1,000 offers) for a single query; split broad searches by category, location, or keyword to reach more.\n\n**Do old saved inputs still work?**  Yes. Legacy keys such as `query`, `contract`, `company`, `urls`, `maxResults`, and `abroadOnly` are accepted; the actor maps them in code. `abroadOnly` was removed from JobTeaser's site, so the legacy value is logged and ignored.\n\n**Why do some detail fields disappear on some offers?**  Detail fields are conditional: salary is only present when the employer publishes it, and some locales omit a text label. Empty values are omitted instead of being emitted as `null`.\n\n**Is this affiliated with JobTeaser?**  No. This is a third-party actor built on JobTeaser's public pages.\n",
    "actorDefinition": {
      "actorSpecification": 1,
      "name": "jobteaser-graduate-and-internship-listings-finder",
      "title": "JobTeaser Graduate & Internship Listings Finder",
      "description": "Search JobTeaser job and internship offers by keyword, category, location, or company, with contract type, experience level, and remote-work filters.",
      "version": "1.0",
      "buildTag": "latest",
      "dockerfile": "./Dockerfile",
      "readme": "# JobTeaser Graduate & Internship Listings Finder\n\nPull job, internship, and apprenticeship offers from JobTeaser — a job board aimed at students, graduates, and early-career professionals across Europe. Search by keyword, browse by category, location, or company, or fetch specific offers by URL.\n\n## What this actor does\n\n- **Six modes:** `search`, `browseByCategory`, `browseByLocation`, `browseByCompany`, `bySearchUrl`, `byUrl`\n- **60+ job categories** (Programming, Marketing, Finance, Engineering, HR, …) as a dropdown\n- **11 contract types** (Internship, Apprenticeship, Full time, VIE, Graduate Programme, …)\n- **Location search** resolved to real cities via geocoding (Paris, Lyon, Berlin, …); without a keyword it returns every offer in that area\n- **Company pages:** all offers from any JobTeaser company profile\n- **Filters:** experience level, study level, remote policy, company sector and size, offer language, start date, simplified application\n- **Sorting:** by relevance or newest first\n- **Full descriptions and structured details** (optional): fetches each offer's detail page for the complete HTML description, salary range, publication and deadline dates, and company profile\n- **No account, cookies, or API key needed**; empty fields are omitted\n\n## Output per job\n\nEvery record carries this base set, from the search/browse results list:\n\n- `jobId` — JobTeaser offer UUID\n- `title`\n- `companyName`, `companyLogoUrl` — when a logo is shown on the listing card\n- `locationText`\n- `contractText`\n- `isJobOfTheWeek` — only present when the listing carries that badge\n- `sourceUrl`\n- `recordType: \"job\"`, `scrapedAt`\n\nThe following are only added when a detail page is fetched — automatically in `mode=byUrl`, or in the other modes when `includeDescription: true` is set:\n\n- `contractType`, `contractDurationMonths` — parsed from the offer and its contract text\n- `startDateText`, `wageText`, `remoteText`\n- `applicationDeadlineText`, `studyLevelText`, `jobCategoryText`\n- `publishedDateText` and `publishedDate` (ISO 8601), `applicationDeadline` (ISO 8601)\n- `salaryCurrency`, `salaryMin`, `salaryMax`, `salaryPeriod` — when the employer publishes a range\n- `educationRequirement`, `directApply`, `jobImmediateStart`\n- `companyBusinessText`, `companyOverview` — company size/type and blurb\n- `companyLogoUrl` — also resolved from the detail page in `mode=byUrl`\n- `descriptionHtml` — full offer description\n\n## Input\n\n| Field | Type | Default | Description |\n|---|---|---|---|\n| `mode` | string | `search` | `search` / `browseByCategory` / `browseByLocation` / `browseByCompany` / `bySearchUrl` / `byUrl` |\n| `searchQuery` | string | `developer` | Free-text query (mode=search) |\n| `jobCategory` | string | – | Category dropdown, 60+ options (mode=browseByCategory) |\n| `location` | string | – | City / region / country (mode=browseByLocation) |\n| `companySlug` | string | – | Company slug (mode=browseByCompany) |\n| `jobUrls` | array | – | Full offer URLs (mode=byUrl) |\n| `searchUrls` | array | – | Search/browse listing URLs (mode=bySearchUrl) |\n| `contractType` | string | – | `internship`, `cdi`, `cdd`, `part_time`, … |\n| `contractDurationMonths` | string | – | `3`, `6`, `12`, `24`, `36` |\n| `jobLocale` | string | – | `fr`, `en`, `de`, `es`, … |\n| `workExperienceCode` | string | – | `young_graduate`, `three_to_five_years`, … |\n| `studyLevel` | string | – | `1`–`6` study-level buckets |\n| `remoteType` | string | – | `remote_partial`, `remote_full` |\n| `companySector` | string | – | 40+ sectors |\n| `companyBusinessType` | string | – | `large`, `startup`, `sme`, … |\n| `startDate` | string | – | `0` (as soon as possible) or `YYYY_MM` start month |\n| `sortBy` | string | `relevance` | `relevance` or `date` (newest first) |\n| `simplifiedApplicationOnly` | bool | `false` | Only offers with a simplified application |\n| `includeDescription` | bool | `false` | Fetch detail pages for full descriptions and structured detail fields |\n| `proxyConfiguration` | object | – | Optional proxy used only when JobTeaser blocks direct requests (403/429) |\n| `maxItems` | int | `50` | Hard cap (1–1000) |\n\n### Example: keyword search\n\n```json\n{\n  \"mode\": \"search\",\n  \"searchQuery\": \"data engineer\",\n  \"contractType\": \"cdi\",\n  \"maxItems\": 20\n}\n```\n\n### Example: browse a category\n\n```json\n{\n  \"mode\": \"browseByCategory\",\n  \"jobCategory\": \"Programming\",\n  \"includeDescription\": true,\n  \"maxItems\": 25\n}\n```\n\n### Example: internships in Paris\n\n```json\n{\n  \"mode\": \"browseByLocation\",\n  \"location\": \"Paris\",\n  \"contractType\": \"internship\",\n  \"maxItems\": 30\n}\n```\n\n### Example: a saved search URL\n\n```json\n{\n  \"mode\": \"bySearchUrl\",\n  \"searchUrls\": [\"https://www.jobteaser.com/en/job-offers?q=data%20engineer&contract=internship\"],\n  \"maxItems\": 40\n}\n```\n\nAny locale path works (`/en/`, `/fr/`, `/de/`, …) for both job-search and company listing URLs.\n\n### Example: all offers from a company\n\n```json\n{\n  \"mode\": \"browseByCompany\",\n  \"companySlug\": \"capgemini\",\n  \"maxItems\": 50\n}\n```\n\n## Use cases\n\n- **Graduate recruiters** — monitor what top employers post for students and graduates\n- **University career services** — collect internship and apprenticeship offers by category\n- **Job aggregators** — ingest structured early-career listings at scale\n- **Talent analytics** — track contract types, start dates and salary ranges over time\n- **Competitive intelligence** — watch hiring signals across company profiles\n\n## FAQ\n\n**What is JobTeaser?**  A career platform used by 1,500+ schools and 100k+ employers across Europe to publish jobs, internships and apprenticeships for students and graduates.\n\n**Does this need an account?**  No. All browsing is public; applying requires an account on JobTeaser, which is outside the scope of this actor.\n\n**Do I need a proxy?**  No. The actor starts with direct requests and automatically switches its own proxy when JobTeaser challenges the datacenter IP. You never have to configure one.\n\n**Where do the categories come from?**  Directly from JobTeaser's own filter taxonomy (position categories, contract types, experience levels, study levels, sectors).\n\n**How does location search work?**  The location text is geocoded (city / region / country), then the actor builds JobTeaser's location filter with the correct coordinates and radius.\n\n**Why is `descriptionHtml` sometimes missing?**  Descriptions live on each offer's detail page. `mode=byUrl` fetches it automatically; for the other modes, set `includeDescription: true` to fetch it too (adds one request per offer).\n\n**How fresh is the data?**  Search and detail pages reflect live listings; with `includeDescription` (or `mode=byUrl`) every record carries an ISO `publishedDate` and `publishedDateText`.\n\n**Why isn't the date sort perfectly ordered?**  JobTeaser pins \"Job of the Week\" cards above the sorted results. All other rows follow newest-first when `sortBy` is `date`.\n\n**How many offers can one run return?**  Up to 1000 records per run, set by `maxItems`. JobTeaser shows at most 50 result pages (about 1,000 offers) for a single query; split broad searches by category, location, or keyword to reach more.\n\n**Do old saved inputs still work?**  Yes. Legacy keys such as `query`, `contract`, `company`, `urls`, `maxResults`, and `abroadOnly` are accepted; the actor maps them in code. `abroadOnly` was removed from JobTeaser's site, so the legacy value is logged and ignored.\n\n**Why do some detail fields disappear on some offers?**  Detail fields are conditional: salary is only present when the employer publishes it, and some locales omit a text label. Empty values are omitted instead of being emitted as `null`.\n\n**Is this affiliated with JobTeaser?**  No. This is a third-party actor built on JobTeaser's public pages.\n",
      "input": {
        "title": "JobTeaser Jobs Scraper Input",
        "description": "Search job offers on JobTeaser, or browse by category, location or company, and fetch specific offers by URL.",
        "type": "object",
        "schemaVersion": 1,
        "properties": {
          "mode": {
            "title": "Mode",
            "type": "string",
            "description": "What to fetch.",
            "editor": "select",
            "enum": [
              "search",
              "browseByCategory",
              "browseByLocation",
              "browseByCompany",
              "bySearchUrl",
              "byUrl"
            ],
            "enumTitles": [
              "Search job offers",
              "Browse by job category",
              "Browse by location",
              "Browse by company",
              "Fetch a saved search URL",
              "Fetch job offers by URL"
            ],
            "default": "search",
            "prefill": "search"
          },
          "searchQuery": {
            "title": "Search query",
            "type": "string",
            "description": "Free-text query matched against job title, company and keywords (mode=search).",
            "editor": "textfield",
            "default": "developer",
            "prefill": "developer"
          },
          "jobCategory": {
            "title": "Job category (mode=browseByCategory)",
            "type": "string",
            "description": "JobTeaser position category.",
            "editor": "select",
            "enum": [
              "Architecture & Urban Planning",
              "Civil Engineering & Structures",
              "Energy, Materials & Mechanical engineering",
              "Engineering",
              "Industrial Design & Engineering",
              "Technology",
              "Communication, PR & Events",
              "Customer service",
              "Management, Consulting & Strategy",
              "Marketing & Webmarketing",
              "Purchasing",
              "Retail",
              "Sales & Business Development",
              "Actuarial",
              "Asset Management",
              "Audit",
              "Corporate Finance",
              "Economics",
              "Financial Services",
              "Insurance",
              "Management Control and Accounting",
              "Admin",
              "Corporate law",
              "Human Resources",
              "Security & Politics",
              "Social Law",
              "Tax law",
              "Electronics & Signal Processing",
              "IT Project, Data & Product Management",
              "Infrastructures, Networks & Telecom",
              "Programming",
              "Web Design & Usability",
              "Agronomy & Biology",
              "Biochemistry & Molecular Biology",
              "Biomedical Sciences",
              "Chemistry & Processes",
              "Environment & Sustainable Development",
              "Geography",
              "Healthcare and Medicine",
              "Laboratory / Analytics",
              "Pharmaceutical Research & Biotechnology",
              "Research & Development",
              "Statistics, Data Analytics & Applied Maths",
              "Construction",
              "Logistics & Supply Chain",
              "Production & Operations",
              "Quality & Maintenance",
              "Culture and the arts",
              "Design & Creative",
              "History / Heritage",
              "Media",
              "Tourism, Hospitality & Food services",
              "Medicine",
              "Odontologist",
              "Paramedical & Care",
              "Pharmacy",
              "Social / Personal & Child care",
              "Sports",
              "Education & Training",
              "Journalism & Publishing"
            ],
            "enumTitles": [
              "Architecture & Urban Planning",
              "Civil Engineering & Structures",
              "Energy, Materials & Mechanical engineering",
              "Engineering",
              "Industrial Design & Engineering",
              "Technology",
              "Communication, PR & Events",
              "Customer service",
              "Management, Consulting & Strategy",
              "Marketing & Webmarketing",
              "Purchasing",
              "Retail",
              "Sales & Business Development",
              "Actuarial",
              "Asset Management",
              "Audit",
              "Corporate Finance",
              "Economics",
              "Financial Services",
              "Insurance",
              "Management Control and Accounting",
              "Admin",
              "Corporate law",
              "Human Resources",
              "Security & Politics",
              "Social Law",
              "Tax law",
              "Electronics & Signal Processing",
              "IT Project, Data & Product Management",
              "Infrastructures, Networks & Telecom",
              "Programming",
              "Web Design & Usability",
              "Agronomy & Biology",
              "Biochemistry & Molecular Biology",
              "Biomedical Sciences",
              "Chemistry & Processes",
              "Environment & Sustainable Development",
              "Geography",
              "Healthcare and Medicine",
              "Laboratory / Analytics",
              "Pharmaceutical Research & Biotechnology",
              "Research & Development",
              "Statistics, Data Analytics & Applied Maths",
              "Construction",
              "Logistics & Supply Chain",
              "Production & Operations",
              "Quality & Maintenance",
              "Culture and the arts",
              "Design & Creative",
              "History / Heritage",
              "Media",
              "Tourism, Hospitality & Food services",
              "Medicine",
              "Odontologist",
              "Paramedical & Care",
              "Pharmacy",
              "Social / Personal & Child care",
              "Sports",
              "Education & Training",
              "Journalism & Publishing"
            ]
          },
          "location": {
            "title": "Location (mode=browseByLocation)",
            "type": "string",
            "description": "City, region or country, e.g. `Paris`, `Lyon`, `Germany`.",
            "editor": "textfield"
          },
          "companySlug": {
            "title": "Company slug (mode=browseByCompany)",
            "type": "string",
            "description": "JobTeaser company slug, e.g. `capgemini`, `ey-gmbh-co-kg-wirtschaftspruefungsgesellschaft`.",
            "editor": "textfield"
          },
          "jobUrls": {
            "title": "Job URLs (mode=byUrl)",
            "type": "array",
            "description": "Full JobTeaser job offer URLs, e.g. `https://www.jobteaser.com/en/job-offers/23281807-bdb4-4ec1-ad4c-8d50cff7efc9-capgemini-lead-data-engineer`.",
            "editor": "stringList",
            "default": [],
            "prefill": []
          },
          "searchUrls": {
            "title": "Search URLs (mode=bySearchUrl)",
            "type": "array",
            "description": "JobTeaser search or company listing URLs in any locale, e.g. `https://www.jobteaser.com/en/job-offers?q=developer`, `https://www.jobteaser.com/fr/job-offers?q=developpeur` or `https://www.jobteaser.com/en/companies/capgemini/job-offers`. Pagination is automatic.",
            "editor": "stringList",
            "default": [],
            "prefill": []
          },
          "contractType": {
            "title": "Contract type",
            "type": "string",
            "description": "Only keep offers with this contract type.",
            "editor": "select",
            "enum": [
              "internship",
              "alternating",
              "cdd",
              "cdi",
              "graduate_program",
              "vie",
              "part_time",
              "thesis",
              "freelance",
              "master_thesis",
              "industry_master_job"
            ],
            "enumTitles": [
              "Internship",
              "Apprenticeship",
              "Fixed-term Position",
              "Full time Position",
              "Graduate Programme / Job Rotation Programme",
              "International Graduate Business Placements (VIE)",
              "Part-time / Student job",
              "Research / Doctorate",
              "Freelance / Independent",
              "Bachelor or Master Thesis",
              "Industry Master Job"
            ]
          },
          "contractDurationMonths": {
            "title": "Contract duration",
            "type": "string",
            "description": "Maximum contract duration bucket.",
            "editor": "select",
            "enum": [
              "3",
              "6",
              "9",
              "12",
              "18",
              "24",
              "36"
            ],
            "enumTitles": [
              "1 - 3 months",
              "4 - 6 months",
              "7 - 9 months",
              "10 - 12 months",
              "13 - 18 months",
              "19 - 24 months",
              "25 - 48+ months"
            ]
          },
          "jobLocale": {
            "title": "Offer language",
            "type": "string",
            "description": "Only keep offers published in this language.",
            "editor": "select",
            "enum": [
              "fr",
              "en",
              "es",
              "de",
              "da",
              "sv",
              "ca",
              "cs",
              "fi",
              "gl",
              "it",
              "no",
              "nl",
              "pl",
              "pt"
            ],
            "enumTitles": [
              "French",
              "English",
              "Spanish",
              "German",
              "Danish",
              "Swedish",
              "Catalan",
              "Czech",
              "Finnish",
              "Galician",
              "Italian",
              "Norwegian",
              "Dutch",
              "Polish",
              "Portuguese"
            ]
          },
          "workExperienceCode": {
            "title": "Work experience",
            "type": "string",
            "description": "Only keep offers for this experience level.",
            "editor": "select",
            "enum": [
              "young_graduate",
              "three_to_five_years",
              "six_to_ten_years",
              "more_than_ten_years"
            ],
            "enumTitles": [
              "Student / Recent Graduate",
              "3 to 5 years",
              "6 to 10 years",
              "More than 10 years"
            ]
          },
          "studyLevel": {
            "title": "Level of study",
            "type": "string",
            "description": "Only keep offers requiring this level of study.",
            "editor": "select",
            "enum": [
              "1",
              "6",
              "2",
              "3",
              "4",
              "5"
            ],
            "enumTitles": [
              "No level prerequired",
              "Secondary education, High school level",
              "Vocational / Under-bachelor / Short-cycle higher education",
              "Bachelor level or equivalent",
              "Master level or equivalent",
              "Doctorate"
            ]
          },
          "remoteType": {
            "title": "Remote work",
            "type": "string",
            "description": "Only keep offers with this remote policy.",
            "editor": "select",
            "enum": [
              "remote_partial",
              "remote_full"
            ],
            "enumTitles": [
              "Remote work occasionally allowed",
              "Full remote work allowed"
            ]
          },
          "companySector": {
            "title": "Company sector",
            "type": "string",
            "description": "Only keep offers from companies in this sector.",
            "editor": "select",
            "enum": [
              "audit",
              "consultancy",
              "law",
              "management_consultancy",
              "accounting_services",
              "banking_finance",
              "insurance",
              "real_estate",
              "building_planning",
              "architecture",
              "luxury",
              "retail",
              "consumer_goods",
              "energy_utilities",
              "environment",
              "agribusiness",
              "aerospace",
              "automotive",
              "chemistry",
              "defense",
              "electronics",
              "materials",
              "other_industries",
              "agriculture",
              "maritime",
              "mechanical_engineering",
              "it_consultancy_it",
              "telecoms",
              "cosmetics",
              "medicine_pharmaceuticals_health",
              "recruitment_training",
              "catering",
              "transport_logistics",
              "other_services_to_individuals_and_businesses",
              "r_d",
              "engineering",
              "digital_e_commerce",
              "media_publishing",
              "communication_advertising",
              "public_education",
              "social_ngo",
              "tourism_hospitality",
              "leisure_culture_sports",
              "other_category"
            ],
            "enumTitles": [
              "Audit",
              "Consulting",
              "Legal",
              "Management Consulting",
              "Accounting Services",
              "Banking / Finance",
              "Insurance",
              "Real Estate",
              "Building / Planning",
              "Architecture / Design",
              "Luxury / Fashion",
              "Retail",
              "Consumer Goods",
              "Energy / Utilities / Oil & Gas",
              "Environment",
              "Food & Beverage",
              "Aerospace",
              "Automotive",
              "Chemistry",
              "Defense",
              "Electronics",
              "Materials",
              "Other Industries",
              "Agriculture / Forest industry",
              "Maritime / Railway",
              "Mechanical Engineering",
              "IT / IT Consulting / Software",
              "Telecoms",
              "Cosmetics",
              "Medicine / Pharmaceuticals / Health",
              "Recruitment / Training",
              "Catering",
              "Transport / Logistics",
              "Other services to individuals and businesses",
              "R&D / Design",
              "Engineering",
              "Digital / E-commerce",
              "Media / Publishing",
              "Communication / Advertising",
              "Public / Government / Education / Armed Forces",
              "Social / NGO / Charity",
              "Events / Tourism / Hospitality",
              "Leisure / Culture / Sports",
              "Other"
            ]
          },
          "companyBusinessType": {
            "title": "Company business type",
            "type": "string",
            "description": "Only keep offers from companies of this size/type.",
            "editor": "select",
            "enum": [
              "large",
              "startup",
              "sme",
              "ngo_public_lab",
              "collective"
            ],
            "enumTitles": [
              "Large company",
              "Start-up",
              "SME",
              "Government / Charity / Public Institution / Other",
              "Collective"
            ]
          },
          "startDate": {
            "title": "Start date",
            "type": "string",
            "description": "Only keep offers starting on or after this month. Use `0` for \"as soon as possible\", or `YYYY_MM` (e.g. `2027_01`). JobTeaser rolls this list forward every month, so the current site options are validated at run time.",
            "editor": "textfield",
            "pattern": "^(0|[0-9]{4}_[0-9]{2})$"
          },
          "sortBy": {
            "title": "Sort order",
            "type": "string",
            "description": "How to order the results.",
            "editor": "select",
            "enum": [
              "relevance",
              "date"
            ],
            "enumTitles": [
              "By relevance",
              "By date (newest first)"
            ],
            "default": "relevance",
            "prefill": "relevance"
          },
          "simplifiedApplicationOnly": {
            "title": "Simplified application only",
            "type": "boolean",
            "description": "Only keep offers that accept a simplified (one-click) application.",
            "default": false,
            "prefill": false
          },
          "includeDescription": {
            "title": "Include full description",
            "type": "boolean",
            "description": "Fetch each offer's detail page to include the full description and extra fields. Slower but richer.",
            "default": false,
            "prefill": false
          },
          "maxItems": {
            "title": "Max items",
            "type": "integer",
            "description": "Hard cap on emitted records.",
            "minimum": 1,
            "maximum": 1000,
            "default": 50,
            "prefill": 5
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Optional proxy used only when JobTeaser blocks direct requests (403/429).",
            "editor": "proxy",
            "prefill": {
              "useApifyProxy": true
            }
          }
        },
        "required": [
          "mode"
        ]
      },
      "output": {
        "actorOutputSchemaVersion": 1,
        "title": "JobTeaser Graduate & Internship Listings Finder Output",
        "description": "Job offers from JobTeaser — title, company, location, contract type, description, and application link.",
        "properties": {
          "jobs": {
            "type": "string",
            "title": "JobTeaser job offers",
            "description": "Dataset containing all scraped JobTeaser job offers.",
            "template": "{{links.apiDefaultDatasetUrl}}/items"
          }
        }
      },
      "storages": {
        "dataset": {
          "actorSpecification": 1,
          "views": {
            "overview": {
              "title": "Job offers",
              "transformation": {
                "fields": [
                  "title",
                  "companyName",
                  "locationText",
                  "contractText",
                  "publishedDateText"
                ]
              },
              "display": {
                "component": "table",
                "properties": {}
              }
            }
          }
        }
      },
      "environmentVariables": {}
    },
    "buildNumber": "1.0.2",
    "imageDigest": "506b0b028669380cffb34ccf2cc9d0b8623b666004abdf1fbb8ab5e999ddb47f",
    "actVersion": {
      "sourceType": "SOURCE_FILES",
      "buildTag": "latest",
      "versionNumber": "1.0"
    },
    "usage": {
      "ACTOR_COMPUTE_UNITS": 0.011685555555555555
    }
  }
}