# Hiring.Cafe Scraper | Fast & Reliable (`fatihtahta/hiring-cafe-scraper`) Actor

Extract Hiring.Cafe job listings at scale with rich company data, salary signals, remote filters, seniority, requirements, benefits, workplace attributes and full descriptions. Built for enterprise-grade labor market intelligence, recruiting operations, and automated analytics pipelines.

- **URL**: https://apify.com/fatihtahta/hiring-cafe-scraper.md
- **Developed by:** [Fatih Tahta](https://apify.com/fatihtahta) (community)
- **Categories:** Jobs, Agents, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.70 / 1,000 job listings

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## Hiring.Cafe Scraper

**Slug:** `fatihtahta/hiring-cafe-scraper`

### Overview

Hiring.Cafe Scraper collects structured job listing records from Hiring.Cafe, including job identity, title, employer details, location, workplace setup, employment attributes, compensation, requirements, benefits, source context, and job descriptions when available. [Hiring.Cafe](https://hiring.cafe) is a job discovery platform with richly categorized roles, making its public listings useful for market intelligence, recruiting operations, talent analytics, and hiring trend monitoring. The actor turns repeatable job searches and direct Hiring.Cafe URLs into normalized JSON records that can be loaded into spreadsheets, warehouses, CRMs, search indexes, and internal reporting workflows. It is designed for dependable recurring data acquisition with consistent output fields and clear handling of optional data, without making assumptions about completeness beyond what is publicly available at run time.

### Why Use This Actor

- **Market research and analytics:** collect normalized job records for labor-market analysis, hiring demand tracking, compensation research, and geographic role distribution.
- **Product and content teams:** power job boards, internal directories, editorial research, or market-facing content with repeatable structured extraction.
- **Developers and data teams:** feed downstream systems, ETL jobs, enrichment pipelines, and operational reporting with predictable JSON records.
- **Lead generation and enrichment:** build employer, role, and hiring-signal datasets using company details, industries, headquarters countries, and application attributes.
- **Monitoring and competitive tracking:** schedule recurring runs to observe new roles, changing job categories, employer activity, salary transparency, and market movement.

### Common Use Cases

- **Market intelligence:** monitor hiring volume, role categories, workplace types, compensation signals, seniority levels, and locations.
- **Talent analytics:** analyze demand for specific job titles, required skills, experience levels, languages, and education requirements.
- **Lead generation:** build targeted prospect lists from employers actively hiring in selected industries, countries, or role segments.
- **Competitive monitoring:** track hiring activity across companies, sectors, locations, and application process types.
- **Catalog and directory building:** populate internal job databases with structured public records and stable job identifiers.
- **Data enrichment:** add current public job and company attributes to CRM, BI, search, or analytics datasets.
- **Recurring reporting:** schedule periodic collection for dashboards, alerts, market updates, and trend analysis.

### Quick Start

1. Choose one or more `queries` for keyword-based discovery, or provide Hiring.Cafe pages in `startUrls`.
2. Add optional filters such as `location`, `sortBy`, workplace type, employment type, seniority, salary, company, industry, headquarters country, or application process.
3. Set a small `limit` for the first validation run.
4. Run the actor in Apify Console.
5. Inspect the first dataset records to confirm the output shape and field coverage match your workflow.
6. Increase the limit, refine filters, or schedule recurring runs once the output is verified.

### Input Parameters

Configure at least one search term in `queries` or one Hiring.Cafe URL in `startUrls`.

| Parameter | Type | Description | Default |
| --- | --- | --- | --- |
| `queries` | array of strings | Free-text job searches such as `software engineer`, `data analyst`, or `product manager`. Each query runs separately and uses the filters configured in the same input. | `[]` |
| `location` | string | Optional city, state, country, or ZIP code such as `Singapore`, `New York, NY`, or `94103`. Leave empty for broader discovery. | - |
| `sortBy` | string | Result ordering. Allowed values: `default` (relevance), `date` (newest), `date_asc` (oldest), `compensation_desc` (highest salary), `compensation_asc` (lowest salary), `experience_asc` (least experience), `experience_desc` (most experience). | `default` |
| `dateFetchedPastNDays` | integer | Recency window in days. Only include jobs Hiring.Cafe has fetched within the selected number of days. Minimum: `1`. | `121` |
| `workplaceTypes` | array of strings | Workplace setup filters. Allowed values: `Remote`, `Hybrid`, `Onsite`, `Field`. | `["Remote", "Hybrid", "Onsite", "Field"]` |
| `commitmentTypes` | array of strings | Employment commitment filters. Allowed values: `Full Time`, `Part Time`, `Contract`, `Internship`, `Temporary`, `Seasonal`, `Volunteer`. | `["Full Time", "Part Time", "Contract", "Internship", "Temporary", "Seasonal", "Volunteer"]` |
| `seniorityLevel` | array of strings | Seniority filters. Allowed values: `No Prior Experience Required`, `Entry Level`, `Mid Level`, `Senior Level`. | `["No Prior Experience Required", "Entry Level", "Mid Level", "Senior Level"]` |
| `roleTypes` | array of strings | Role structure filters. Allowed values: `Individual Contributor`, `People Manager`. | `["Individual Contributor", "People Manager"]` |
| `minCompensationLowEnd` | number | Minimum salary lower bound. Only include jobs whose listed salary range starts at or above this value. | - |
| `maxCompensationHighEnd` | number | Maximum salary upper bound. Only include jobs whose listed salary range ends at or below this value. | - |
| `restrictJobsToTransparentSalaries` | boolean | Require visible salary information. Useful for cleaner compensation analysis, but may reduce coverage. | `false` |
| `companyNames` | array of strings | Include only jobs from these company names. Leave empty to include all matching employers. | `[]` |
| `excludedCompanyNames` | array of strings | Exclude jobs from these company names. | `[]` |
| `industries` | array of strings | Include only companies in the listed industries. | `[]` |
| `excludedIndustries` | array of strings | Exclude companies in the listed industries. | `[]` |
| `companyHqCountries` | array of strings | Include only companies headquartered in the listed countries. Use country names or codes in the same style used on Hiring.Cafe. | `[]` |
| `applicationFormEase` | array of strings | Application process filters. Allowed values: `Simple`, `Time Consuming`. | `[]` |
| `startUrls` | array of strings | Direct Hiring.Cafe search or job page URLs. Useful for replaying a prepared search or collecting from specific job pages. | `[]` |
| `limit` | integer | Maximum number of job records to save for each search term or direct URL. Minimum: `1`. | Prefill: `100` |

### Choosing Inputs

Use `queries` when you want the actor to discover matching jobs from keywords. Use `startUrls` when you already have a prepared Hiring.Cafe search page or a specific Hiring.Cafe job page to collect. Narrow filters such as `location`, `workplaceTypes`, `commitmentTypes`, `seniorityLevel`, `roleTypes`, salary fields, company names, industries, headquarters countries, and `applicationFormEase` produce more targeted datasets; broader inputs improve discovery. `sortBy` controls result ordering, while `dateFetchedPastNDays` controls the recency window. Start with a conservative `limit`, inspect the output, then increase the limit once the result shape and coverage match your use case.

### Example Inputs

#### Search-driven validation run

```json
{
  "queries": ["software engineer"],
  "location": "Brazil",
  "sortBy": "date",
  "dateFetchedPastNDays": 30,
  "workplaceTypes": ["Remote"],
  "limit": 25
}
````

#### Direct Hiring.Cafe URL run

```json
{
  "startUrls": ["https://hiring.cafe/?searchState=%7B%22searchQuery%22%3A%22data%20analyst%22%7D"],
  "sortBy": "default",
  "workplaceTypes": ["Remote", "Hybrid"],
  "commitmentTypes": ["Full Time", "Contract"],
  "limit": 50
}
```

#### Targeted company and compensation run

```json
{
  "queries": ["product manager"],
  "location": "New York, NY",
  "companyNames": ["Visa", "Stripe"],
  "restrictJobsToTransparentSalaries": true,
  "minCompensationLowEnd": 120000,
  "maxCompensationHighEnd": 250000,
  "limit": 40
}
```

### Output

#### Output Destination

The actor writes results to an Apify dataset as JSON records. The dataset is designed for direct consumption by analytics tools, ETL pipelines, and downstream APIs with minimal post-processing.

When multiple entity types or record shapes exist, this README documents each shape separately based on the provided Example Output. The provided output represents a job listing record.

#### Record Envelope And Stable Identifiers

Each job record includes top-level identity fields such as `id`, `url`, and `title`, followed by grouped objects for company, location, employment, compensation, requirements, work conditions, benefits, status, source attributes, source context, and description content.

Recommended idempotency key: `id`. If a downstream system cannot use `id`, use `url` as the secondary stable key. For repeated runs, deduplicate and upsert records by the selected stable key so updates to the same public job listing merge into the existing destination record. Stable identifiers make records easier to merge, deduplicate, and sync across repeated runs.

The `source_context.source_url` field identifies the Hiring.Cafe page associated with the search or listing source when available.

#### Example: Job Record

```json
{
  "id": "workday___visa-wd5-visa___software-engineer--credit-rights_ref081817w",
  "url": "https://visa.wd5.myworkdayjobs.com/Visa/job/BR---Remote---Brazil/Software-Engineer--Credit-Rights_REF081817W",
  "title": "Software Engineer, Credit Rights",
  "company": {
    "name": "Visa",
    "website": "https://httpss---corporate.visa.com/",
    "tagline": "A global payments technology company enabling digital payments and financial services.",
    "sector": "Information Technology",
    "industries": [
      "Financial Services",
      "Financial Technology"
    ],
    "activities": [
      "payments technology",
      "financial services"
    ],
    "size": 34000,
    "headquarters_country": "US",
    "organization_type": "Public",
    "year_founded": 1958,
    "status": "VALID_COMPANY",
    "stock": {
      "exchange": "NYSE",
      "symbol": "V"
    }
  },
  "location": {
    "display": "Brazil",
    "workplace_type": "Remote",
    "countries": [
      "BR"
    ],
    "continents": [
      "South America"
    ],
    "is_worldwide": false
  },
  "employment": {
    "core_title": "Software Engineer",
    "category": "Software Development",
    "commitment": [
      "Full Time"
    ],
    "seniority_level": "Mid Level",
    "role_type": "Individual Contributor",
    "role_activities": [
      "develop services",
      "design APIs",
      "collaborate teams"
    ],
    "position_employer_type": "External Position",
    "published_at": "2026-05-15T00:00:00.000Z",
    "published_at_millis": 1778803200000
  },
  "compensation": {
    "is_transparent": false,
    "currency": "USD",
    "frequency": "Yearly"
  },
  "requirements": {
    "summary": "3+ years in Java/Groovy, AWS, microservices, REST APIs; remote Brazil-based; English proficiency; strong testing and CI/CD mindset.",
    "degrees": {
      "associates": {
        "requirement": "Not Mentioned"
      },
      "bachelors": {
        "requirement": "Required",
        "fields_of_study": [
          "Computer Science",
          "Software Engineering",
          "Information Technology"
        ]
      },
      "masters": {
        "requirement": "Not Mentioned"
      },
      "doctorate": {
        "requirement": "Not Mentioned"
      }
    },
    "licenses_or_certifications_not_mentioned": true,
    "languages": [
      "English"
    ],
    "language_count": 1,
    "minimum_experience_years": 3,
    "is_experience_not_mentioned": false,
    "is_management_experience_not_mentioned": true,
    "is_high_school_required": true,
    "is_driver_license_required": false,
    "security_clearance": "None"
  },
  "work_conditions": {
    "physical_environment": "Office",
    "physical_labor_intensity": "Low",
    "physical_position": "Sitting",
    "oral_communication_level": "Medium",
    "computer_usage": "High",
    "cognitive_demand": "High",
    "travel": {
      "air": "None",
      "land": "None"
    },
    "shifts": {
      "morning": "Not Indicated",
      "evening": "Not Indicated",
      "overnight": "Not Indicated"
    },
    "availability": {
      "weekends": false,
      "holidays": false,
      "on_call": "None",
      "overtime": false
    }
  },
  "benefits": {
    "fair_chance": false,
    "visa_sponsorship": false,
    "relocation_assistance": false,
    "military_veterans": false,
    "tuition_reimbursement": false,
    "retirement_plan": false,
    "401k_matching": false,
    "generous_paid_time_off": false,
    "generous_parental_leave": false,
    "four_day_work_week": false
  },
  "status": {
    "is_expired": false
  },
  "attributes": {
    "processed_job_data": {
      "technical_tools": [
        "Java",
        "Groovy",
        "AWS (SQS,SNS,DynamoDB,S3,EventBridge)",
        "REST",
        "Git",
        "Docker",
        "Terraform",
        "CI/CD",
        "MongoDB",
        "MySQL",
        "PostgreSQL",
        "Observability",
        "Event-driven architecture"
      ],
      "boundless_workplace_countries": [
        "BR"
      ]
    },
    "company_data": {
      "enriched_at": "2026-05-11T18:41:05.297Z"
    },
    "job_information": {
      "hiddenFromUsers": [
        "O0zrnfgtTMWYwHlth6b8yPY8Fvv1",
        "6SduDxBxkQc9fcFt37Is6dBVTBG2",
        "rL2CeVBoiURUtJAk2x1XSGxDclZ2"
      ]
    },
    "source_fields": {
      "is_expired": false
    }
  },
  "source_context": {
    "source_url": "https://hiring.cafe/?searchState=%7B%22locations%22%3A%5B%5D%2C%22workplaceTypes%22%3A%5B%22Remote%22%2C%22Hybrid%22%2C%22Onsite%22%2C%22Field%22%5D%2C%22defaultToUserLocation%22%3Atrue%2C%22userLocation%22%3Anull%2C%22physicalEnvironments%22%3A%5B%22Office%22%2C%22Outdoor%22%2C%22Vehicle%22%2C%22Industrial%22%2C%22Customer-Facing%22%5D%2C%22physicalLaborIntensity%22%3A%5B%22Low%22%2C%22Medium%22%2C%22High%22%5D%2C%22physicalPositions%22%3A%5B%22Sitting%22%2C%22Standing%22%5D%2C%22oralCommunicationLevels%22%3A%5B%22Low%22%2C%22Medium%22%2C%22High%22%5D%2C%22computerUsageLevels%22%3A%5B%22Low%22%2C%22Medium%22%2C%22High%22%5D%2C%22cognitiveDemandLevels%22%3A%5B%22Low%22%2C%22Medium%22%2C%22High%22%5D%2C%22currency%22%3A%7B%22label%22%3A%22Any%22%2C%22value%22%3Anull%7D%2C%22frequency%22%3A%7B%22label%22%3A%22Any%22%2C%22value%22%3Anull%7D%2C%22minCompensationLowEnd%22%3Anull%2C%22minCompensationHighEnd%22%3Anull%2C%22maxCompensationLowEnd%22%3Anull%2C%22maxCompensationHighEnd%22%3Anull%2C%22restrictJobsToTransparentSalaries%22%3Afalse%2C%22calcFrequency%22%3A%22Yearly%22%2C%22commitmentTypes%22%3A%5B%22Full+Time%22%2C%22Part+Time%22%2C%22Contract%22%2C%22Internship%22%2C%22Temporary%22%2C%22Seasonal%22%2C%22Volunteer%22%5D%2C%22jobTitleQuery%22%3A%22%22%2C%22jobDescriptionQuery%22%3A%22%22%2C%22associatesDegreeFieldsOfStudy%22%3A%5B%5D%2C%22excludedAssociatesDegreeFieldsOfStudy%22%3A%5B%5D%2C%22bachelorsDegreeFieldsOfStudy%22%3A%5B%5D%2C%22excludedBachelorsDegreeFieldsOfStudy%22%3A%5B%5D%2C%22mastersDegreeFieldsOfStudy%22%3A%5B%5D%2C%22excludedMastersDegreeFieldsOfStudy%22%3A%5B%5D%2C%22doctorateDegreeFieldsOfStudy%22%3A%5B%5D%2C%22excludedDoctorateDegreeFieldsOfStudy%22%3A%5B%5D%2C%22associatesDegreeRequirements%22%3A%5B%5D%2C%22bachelorsDegreeRequirements%22%3A%5B%5D%2C%22mastersDegreeRequirements%22%3A%5B%5D%2C%22doctorateDegreeRequirements%22%3A%5B%5D%2C%22licensesAndCertifications%22%3A%5B%5D%2C%22excludedLicensesAndCertifications%22%3A%5B%5D%2C%22excludeAllLicensesAndCertifications%22%3Afalse%2C%22seniorityLevel%22%3A%5B%22No+Prior+Experience+Required%22%2C%22Entry+Level%22%2C%22Mid+Level%22%2C%22Senior+Level%22%5D%2C%22roleTypes%22%3A%5B%22Individual+Contributor%22%2C%22People+Manager%22%5D%2C%22roleYoeRange%22%3A%5B0%2C20%5D%2C%22excludeIfRoleYoeIsNotSpecified%22%3Afalse%2C%22managementYoeRange%22%3A%5B0%2C20%5D%2C%22excludeIfManagementYoeIsNotSpecified%22%3Afalse%2C%22securityClearances%22%3A%5B%22None%22%2C%22Confidential%22%2C%22Secret%22%2C%22Top+Secret%22%2C%22Top+Secret%2FSCI%22%2C%22Public+Trust%22%2C%22Interim+Clearances%22%2C%22Other%22%5D%2C%22languageRequirements%22%3A%5B%5D%2C%22excludedLanguageRequirements%22%3A%5B%5D%2C%22languageRequirementsOperator%22%3A%22OR%22%2C%22excludeJobsWithAdditionalLanguageRequirements%22%3Afalse%2C%22airTravelRequirement%22%3A%5B%22None%22%2C%22Minimal%22%2C%22Moderate%22%2C%22Extensive%22%5D%2C%22landTravelRequirement%22%3A%5B%22None%22%2C%22Minimal%22%2C%22Moderate%22%2C%22Extensive%22%5D%2C%22morningShiftWork%22%3A%5B%5D%2C%22eveningShiftWork%22%3A%5B%5D%2C%22overnightShiftWork%22%3A%5B%5D%2C%22weekendAvailabilityRequired%22%3A%22Doesn%27t+Matter%22%2C%22holidayAvailabilityRequired%22%3A%22Doesn%27t+Matter%22%2C%22overtimeRequired%22%3A%22Doesn%27t+Matter%22%2C%22onCallRequirements%22%3A%5B%22None%22%2C%22Occasional+%28once+a+month+or+less%29%22%2C%22Regular+%28once+a+week+or+more%29%22%5D%2C%22benefitsAndPerks%22%3A%5B%5D%2C%22applicationFormEase%22%3A%5B%5D%2C%22companyNames%22%3A%5B%5D%2C%22excludedCompanyNames%22%3A%5B%5D%2C%22companyHqCountries%22%3A%5B%5D%2C%22excludedCompanyHqCountries%22%3A%5B%5D%2C%22usaGovPref%22%3Anull%2C%22industries%22%3A%5B%5D%2C%22excludedIndustries%22%3A%5B%5D%2C%22companyKeywords%22%3A%5B%5D%2C%22companyKeywordsBooleanOperator%22%3A%22OR%22%2C%22excludedCompanyKeywords%22%3A%5B%5D%2C%22hideJobTypes%22%3A%5B%5D%2C%22encouragedToApply%22%3A%5B%5D%2C%22dateFetchedPastNDays%22%3A121%2C%22hiddenCompanies%22%3A%5B%5D%2C%22user%22%3Anull%2C%22searchModeSelectedCompany%22%3Anull%2C%22departments%22%3A%5B%5D%2C%22restrictedSearchAttributes%22%3A%5B%5D%2C%22sortBy%22%3A%22default%22%2C%22technologyKeywordsQuery%22%3A%22%22%2C%22requirementsKeywordsQuery%22%3A%22%22%2C%22companyPublicOrPrivate%22%3A%22all%22%2C%22latestInvestmentYearRange%22%3A%5Bnull%2Cnull%5D%2C%22latestInvestmentSeries%22%3A%5B%5D%2C%22latestInvestmentAmount%22%3Anull%2C%22latestInvestmentCurrency%22%3A%5B%5D%2C%22investors%22%3A%5B%5D%2C%22excludedInvestors%22%3A%5B%5D%2C%22isNonProfit%22%3A%22all%22%2C%22organizationTypes%22%3A%5B%5D%2C%22excludedOrganizationTypes%22%3A%5B%5D%2C%22companySizeRanges%22%3A%5B%5D%2C%22minYearFounded%22%3Anull%2C%22maxYearFounded%22%3Anull%2C%22excludedLatestInvestmentSeries%22%3A%5B%5D%2C%22searchQuery%22%3A%22software+engineer%22%7D",
    "seed_id": "f5358fb249e4",
    "seed_type": "query",
    "seed_value": "software engineer",
    "page_index": 0,
    "source": "workday",
    "source_board": "visa-wd5-visa",
    "requisition_id": "cg2upyhuig4egajx"
  },
  "description": {
    "html": "<p><span style=\"color:#005cb9\"><b>About Us</b></span><br />Visa is a world leader in payments technology, facilitating transactions between consumers, merchants, financial institutions and government entities across more than 200 countries and territories, dedicated to uplifting everyone, everywhere by being the best way to pay and be paid.</p><p></p><p>At Visa, you&#39;ll have the opportunity to create impact at scale — tackling meaningful challenges, growing your skills and seeing your contributions impact lives around the world.</p><p></p><p>Join Visa and do work that matters – to you, to your community, and to the world.  Progress starts with you.</p><p></p><p><span style=\"color:#005cb9\"><b>Job Description</b></span></p><p></p><p><b>Sumary</b></p><p>The Credit Rights Squad is responsible for developing digital receivables solutions for financial institutions, building and evolving highly scalable, secure, and resilient platforms. Operating in a regulated and high-volume environment, the squad ensures efficient processing and supports critical financial products for clients.</p><p></p><div><p><b>What You&#39;ll Do</b></p><ul><li><p>Develop and maintain scalable, reliable, and secure services primarily using Golang, with exposure to JVM‑based technologies when needed, deployed on AWS.</p></li><li><p>Own the delivery of clean, efficient, testable, and well‑documented code aligned with the squad’s technical strategy and business goals.</p></li><li><p>Actively participate in all stages of the software development lifecycle, including technical planning, system design, implementation, testing, deployment, and production support.</p></li><li><p>Design and implement scalable microservices architectures, evaluating trade‑offs related to performance, reliability, and maintainability.</p></li><li><p>Write and maintain robust automated tests (unit, integration, performance, and end‑to‑end) to ensure system quality and resilience.</p></li><li><p>Build and evolve orchestration layers integrating internal and external services.</p></li><li><p>Develop RESTful APIs and reusable components in a microservices‑based architecture.</p></li><li><p>Collaborate cross‑functionally with product, QA, and DevOps teams to deliver impactful solutions.</p></li><li><p>Work with modern engineering best practices, prioritizing security, performance, and scalability.</p></li><li><p>Contribute to technical design and architecture decisions within the squad.</p></li><li><p>Operate in a highly documented environment, ensuring clear and transparent communication.</p></li><li><p>Engage in mentoring, continuous learning, and technical improvement initiatives.</p></li><li><p>Contribute to architectural and technical discussions, supporting continuous improvement, scalability, and long‑term platform evolution.</p></li><li><p>Ensure system stability and reliability, supporting incident response and operational excellence practices.</p></li><li><p>Stay up to date with emerging technologies and best practices, contributing insights to squad‑level and collective‑level discussions.</p></li><li><p>Be recognized for delivering high‑quality, impactful technical solutions within the team.</p></li></ul><p></p></div><p>This is a remote position. A remote position does not require job duties be performed within proximity of a Visa office location. Remote positions may be required to be present at a Visa office with scheduled notice. #LI‑Remote</p><p></p><p><span style=\"color:#005cb9\"><b>Qualifications</b></span></p><p></p><p>For this role, you must be based in Brazil</p><p></p><div><p><b>Language Skills</b></p><p>Proficiency in English at B1 level (Intermediate)</p><p></p></div><div><p><b>Technical Skills</b></p><ul><li><p>3&#43; years of experience with Java / Groovy.</p></li><li><p>Experience with AWS services such as SQS, SNS, DynamoDB, S3, and EventBridge.</p></li><li><p>Solid understanding of distributed systems and microservices architectures.</p></li><li><p>Experience building and consuming REST APIs.</p></li><li><p>Proficiency with Git and version control workflows.</p></li><li><p>Strong testing mindset, including experience with unit and integration testing.</p></li><li><p>Knowledge of SQL (MySQL or PostgreSQL) and NoSQL databases (DynamoDB, MongoDB).</p></li><li><p>Experience working in high‑scale, high‑availability environments.</p></li><li><p>Familiarity with CI/CD pipelines and containerization technologies such as Docker.</p></li><li><p>Knowledge of messaging systems and event‑driven architectures.</p></li><li><p>Understanding of observability practices, including monitoring, tracing, and alerting.</p></li><li><p>Experience working in Agile environments and supporting production systems.</p></li><li><p>Hands‑on experience with Infrastructure as Code tools such as Terraform or similar.</p></li><li><p>Ability to contribute to technical decision‑making related to scalability, performance, and system evolution.</p></li></ul></div><div><p><b>Preferred Qualifications</b></p><ul><li><p>Experience working with mission‑critical systems.</p></li><li><p>Experience in the Financial Industry or with Payments / Authorization Systems.</p></li><li><p>Familiarity with observability tools for distributed systems.</p></li><li><p>Exposure to Golang or willingness to learn.</p></li><li><p>AWS certifications.</p></li><li><p>Experience using AI‑assisted development tools (e.g., Copilot, GPT, Claude).</p></li><li><p>3 or more years of work experience with a Bachelor’s Degree or more than 2 years of work experience with an Advanced Degree (e.g., Master’s, MBA). (manter obrigatoriamente essa mensagem exigência de formação acadêmica)</p></li></ul></div><p></p><p></p><p></p><p></p><p></p><p><span style=\"color:#005cb9\"><b>Visa is an EEO Employer</b></span></p><p>Qualified applicants will receive consideration for employment without regard to race, color, religion, sex, national origin, sexual orientation, gender identity, disability or protected veteran status. Visa will also consider for employment qualified applicants with criminal histories in a manner consistent with EEOC guidelines and applicable local law.</p><p></p>",
    "text": "About Us\nVisa is a world leader in payments technology, facilitating transactions between consumers, merchants, financial institutions and government entities across more than 200 countries and territories, dedicated to uplifting everyone, everywhere by being the best way to pay and be paid.\nAt Visa, you'll have the opportunity to create impact at scale — tackling meaningful challenges, growing your skills and seeing your contributions impact lives around the world.\nJoin Visa and do work that matters – to you, to your community, and to the world.  Progress starts with you.\nJob Description\nSumary\nThe Credit Rights Squad is responsible for developing digital receivables solutions for financial institutions, building and evolving highly scalable, secure, and resilient platforms. Operating in a regulated and high-volume environment, the squad ensures efficient processing and supports critical financial products for clients.\nWhat You'll Do\nDevelop and maintain scalable, reliable, and secure services primarily using Golang, with exposure to JVM‑based technologies when needed, deployed on AWS.\nOwn the delivery of clean, efficient, testable, and well‑documented code aligned with the squad’s technical strategy and business goals.\nActively participate in all stages of the software development lifecycle, including technical planning, system design, implementation, testing, deployment, and production support.\nDesign and implement scalable microservices architectures, evaluating trade‑offs related to performance, reliability, and maintainability.\nWrite and maintain robust automated tests (unit, integration, performance, and end‑to‑end) to ensure system quality and resilience.\nBuild and evolve orchestration layers integrating internal and external services.\nDevelop RESTful APIs and reusable components in a microservices‑based architecture.\nCollaborate cross‑functionally with product, QA, and DevOps teams to deliver impactful solutions.\nWork with modern engineering best practices, prioritizing security, performance, and scalability.\nContribute to technical design and architecture decisions within the squad.\nOperate in a highly documented environment, ensuring clear and transparent communication.\nEngage in mentoring, continuous learning, and technical improvement initiatives.\nContribute to architectural and technical discussions, supporting continuous improvement, scalability, and long‑term platform evolution.\nEnsure system stability and reliability, supporting incident response and operational excellence practices.\nStay up to date with emerging technologies and best practices, contributing insights to squad‑level and collective‑level discussions.\nBe recognized for delivering high‑quality, impactful technical solutions within the team.\nThis is a remote position. A remote position does not require job duties be performed within proximity of a Visa office location. Remote positions may be required to be present at a Visa office with scheduled notice. #LI‑Remote\nQualifications\nFor this role, you must be based in Brazil\nLanguage Skills\nProficiency in English at B1 level (Intermediate)\nTechnical Skills\n3+ years of experience with Java / Groovy.\nExperience with AWS services such as SQS, SNS, DynamoDB, S3, and EventBridge.\nSolid understanding of distributed systems and microservices architectures.\nExperience building and consuming REST APIs.\nProficiency with Git and version control workflows.\nStrong testing mindset, including experience with unit and integration testing.\nKnowledge of SQL (MySQL or PostgreSQL) and NoSQL databases (DynamoDB, MongoDB).\nExperience working in high‑scale, high‑availability environments.\nFamiliarity with CI/CD pipelines and containerization technologies such as Docker.\nKnowledge of messaging systems and event‑driven architectures.\nUnderstanding of observability practices, including monitoring, tracing, and alerting.\nExperience working in Agile environments and supporting production systems.\nHands‑on experience with Infrastructure as Code tools such as Terraform or similar.\nAbility to contribute to technical decision‑making related to scalability, performance, and system evolution.\nPreferred Qualifications\nExperience working with mission‑critical systems.\nExperience in the Financial Industry or with Payments / Authorization Systems.\nFamiliarity with observability tools for distributed systems.\nExposure to Golang or willingness to learn.\nAWS certifications.\nExperience using AI‑assisted development tools (e.g., Copilot, GPT, Claude).\n3 or more years of work experience with a Bachelor’s Degree or more than 2 years of work experience with an Advanced Degree (e.g., Master’s, MBA). (manter obrigatoriamente essa mensagem exigência de formação acadêmica)\nVisa is an EEO Employer\nQualified applicants will receive consideration for employment without regard to race, color, religion, sex, national origin, sexual orientation, gender identity, disability or protected veteran status. Visa will also consider for employment qualified applicants with criminal histories in a manner consistent with EEOC guidelines and applicable local law."
  }
}
```

### Field Reference

#### Job Record

**id** *(string, required)*: Stable job record identifier.
**url** *(string, optional)*: Public job posting URL.
**title** *(string, optional)*: Job title.

**company.name** *(string, optional)*: Employer name.
**company.website** *(string, optional)*: Employer website.
**company.tagline** *(string, optional)*: Short company description.
**company.sector** *(string, optional)*: Company sector.
**company.industries** *(array of strings, optional)*: Industry classifications.
**company.activities** *(array of strings, optional)*: Business activities.
**company.size** *(number, optional)*: Company size when available.
**company.headquarters\_country** *(string, optional)*: Headquarters country code or label.
**company.organization\_type** *(string, optional)*: Organization type, such as public or private.
**company.year\_founded** *(number, optional)*: Founding year.
**company.status** *(string, optional)*: Company validation or availability status.
**company.stock.exchange / company.stock.symbol** *(string, optional)*: Public stock exchange and ticker symbol.

**location.display** *(string, optional)*: Human-readable job location.
**location.workplace\_type** *(string, optional)*: Workplace setup, such as remote, hybrid, onsite, or field.
**location.countries** *(array of strings, optional)*: Country codes associated with the role.
**location.continents** *(array of strings, optional)*: Continents associated with the role.
**location.is\_worldwide** *(boolean, optional)*: Whether the listing is worldwide.

**employment.core\_title** *(string, optional)*: Normalized role title.
**employment.category** *(string, optional)*: Job category.
**employment.commitment** *(array of strings, optional)*: Employment commitment types.
**employment.seniority\_level** *(string, optional)*: Seniority level.
**employment.role\_type** *(string, optional)*: Role structure, such as individual contributor or people manager.
**employment.role\_activities** *(array of strings, optional)*: Role activity summaries.
**employment.position\_employer\_type** *(string, optional)*: Position relationship to the employer.
**employment.published\_at** *(string, optional)*: Publication timestamp.
**employment.published\_at\_millis** *(number, optional)*: Publication timestamp in milliseconds.

**compensation.is\_transparent** *(boolean, optional)*: Whether visible compensation is available.
**compensation.currency** *(string, optional)*: Compensation currency.
**compensation.frequency** *(string, optional)*: Compensation frequency, such as yearly.

**requirements.summary** *(string, optional)*: Short requirements summary.
**requirements.degrees.associates.requirement** *(string, optional)*: Associate degree requirement.
**requirements.degrees.bachelors.requirement** *(string, optional)*: Bachelor degree requirement.
**requirements.degrees.bachelors.fields\_of\_study** *(array of strings, optional)*: Bachelor degree fields of study.
**requirements.degrees.masters.requirement** *(string, optional)*: Master degree requirement.
**requirements.degrees.doctorate.requirement** *(string, optional)*: Doctorate requirement.
**requirements.licenses\_or\_certifications\_not\_mentioned** *(boolean, optional)*: Whether licenses or certifications are not mentioned.
**requirements.languages** *(array of strings, optional)*: Language requirements.
**requirements.language\_count** *(number, optional)*: Number of listed language requirements.
**requirements.minimum\_experience\_years** *(number, optional)*: Minimum years of role experience.
**requirements.is\_experience\_not\_mentioned** *(boolean, optional)*: Whether experience is not mentioned.
**requirements.is\_management\_experience\_not\_mentioned** *(boolean, optional)*: Whether management experience is not mentioned.
**requirements.is\_high\_school\_required** *(boolean, optional)*: Whether high school completion is required.
**requirements.is\_driver\_license\_required** *(boolean, optional)*: Whether a driver license is required.
**requirements.security\_clearance** *(string, optional)*: Security clearance requirement.

**work\_conditions.physical\_environment** *(string, optional)*: Work environment category.
**work\_conditions.physical\_labor\_intensity** *(string, optional)*: Physical labor intensity.
**work\_conditions.physical\_position** *(string, optional)*: Primary physical position.
**work\_conditions.oral\_communication\_level** *(string, optional)*: Oral communication requirement level.
**work\_conditions.computer\_usage** *(string, optional)*: Computer usage level.
**work\_conditions.cognitive\_demand** *(string, optional)*: Cognitive demand level.
**work\_conditions.travel.air / work\_conditions.travel.land** *(string, optional)*: Air and land travel requirements.
**work\_conditions.shifts.morning / work\_conditions.shifts.evening / work\_conditions.shifts.overnight** *(string, optional)*: Shift indicators.
**work\_conditions.availability.weekends** *(boolean, optional)*: Weekend availability requirement.
**work\_conditions.availability.holidays** *(boolean, optional)*: Holiday availability requirement.
**work\_conditions.availability.on\_call** *(string, optional)*: On-call requirement.
**work\_conditions.availability.overtime** *(boolean, optional)*: Overtime requirement.

**benefits.fair\_chance** *(boolean, optional)*: Fair chance hiring indicator.
**benefits.visa\_sponsorship** *(boolean, optional)*: Visa sponsorship indicator.
**benefits.relocation\_assistance** *(boolean, optional)*: Relocation assistance indicator.
**benefits.military\_veterans** *(boolean, optional)*: Military veteran hiring indicator.
**benefits.tuition\_reimbursement** *(boolean, optional)*: Tuition reimbursement indicator.
**benefits.retirement\_plan** *(boolean, optional)*: Retirement plan indicator.
**benefits.401k\_matching** *(boolean, optional)*: 401(k) matching indicator.
**benefits.generous\_paid\_time\_off** *(boolean, optional)*: Paid time off indicator.
**benefits.generous\_parental\_leave** *(boolean, optional)*: Parental leave indicator.
**benefits.four\_day\_work\_week** *(boolean, optional)*: Four-day work week indicator.

**status.is\_expired** *(boolean, optional)*: Whether the job is marked expired.

**attributes.processed\_job\_data.technical\_tools** *(array of strings, optional)*: Technical tools or technologies mentioned for the role.
**attributes.processed\_job\_data.boundless\_workplace\_countries** *(array of strings, optional)*: Countries associated with broadly available workplace setup.
**attributes.company\_data.enriched\_at** *(string, optional)*: Timestamp for company data availability in the source record.
**attributes.job\_information.hiddenFromUsers** *(array of strings, optional)*: Source-provided job metadata values.
**attributes.source\_fields.is\_expired** *(boolean, optional)*: Source-level expiration indicator.

**source\_context.source\_url** *(string, optional)*: Hiring.Cafe source page associated with the job or search.
**source\_context.seed\_id** *(string, optional)*: Source target identifier for the collection run.
**source\_context.seed\_type** *(string, optional)*: Source target type, such as query or URL.
**source\_context.seed\_value** *(string, optional)*: Original query or URL value used for collection.
**source\_context.page\_index** *(number, optional)*: Result page index.
**source\_context.source** *(string, optional)*: Source job platform label.
**source\_context.source\_board** *(string, optional)*: Source job board label.
**source\_context.requisition\_id** *(string, optional)*: Job requisition identifier when available.

**description.html** *(string, optional)*: Job description as HTML when available.
**description.text** *(string, optional)*: Job description as plain text when available.

### Data Quality, Guarantees, And Handling

- **Structured records:** results are normalized into predictable JSON objects for downstream use.
- **Best-effort extraction:** fields may vary by region, availability, and source-side presentation changes.
- **Optional fields:** null-check fields in downstream code, especially compensation, company enrichment, benefits, and description data.
- **Deduplication:** use `id` as the recommended stable key; use `url` as a secondary key when needed.
- **Freshness:** results reflect the publicly available data at run time.
- **Repeated runs:** use the recommended idempotency key when syncing data into warehouses, CRMs, or search indexes.

### Tips For Best Results

- Start with a small `limit` to validate the output shape before scaling up.
- Use one geography, company segment, or role category per run when clean segmentation matters.
- Leave optional filters empty when the goal is broad discovery.
- Add filters gradually to understand how each field changes coverage.
- Use `dateFetchedPastNDays` and `sortBy` for freshness-oriented monitoring.
- Schedule recurring runs for monitoring workflows instead of relying on manual one-off exports.
- Store records by `id` to deduplicate repeated runs cleanly.

### How To Run On Apify

1. Open the actor in Apify Console.
2. Configure the available input fields for the target scope.
3. Set the maximum number of outputs to collect with `limit`.
4. Click **Start** and wait for the run to finish.
5. Open the dataset and inspect the first records.
6. Download results in JSON, CSV, Excel, or another supported format.

### Scheduling & Automation

#### Scheduling

**Automated Data Collection**

Schedule runs to keep Hiring.Cafe job datasets fresh for dashboards, alerts, enrichment, and reporting workflows. Recurring collection is especially useful for tracking new roles, employer activity, and changes in hiring segments over time.

- Navigate to **Schedules** in Apify Console
- Create a new schedule, such as daily, weekly, or custom cron
- Configure input parameters
- Enable notifications for run completion
- Add webhooks for automated processing

#### Integration Options

- **CRM enrichment:** sync company, role, location, and hiring attributes into account or lead records.
- **Google Sheets or Airtable:** review selected job leads, hiring signals, and target employer lists with lightweight operations teams.
- **Webhooks:** trigger validation, notification, ingestion, or enrichment workflows after each completed run.
- **Data enrichment pipelines:** join public job attributes with existing employer, market, or talent datasets.
- **BI dashboards:** monitor hiring volume, role mix, workplace type, seniority, and compensation transparency over time.
- **Warehouse ingestion:** store historical job records for analytics, trend modeling, and recurring reports.

### Export Formats And Downstream Use

Apify datasets can be exported from the Console or consumed by downstream systems for operational workflows, reporting, and automated ingestion.

- **JSON:** for APIs, applications, and data pipelines
- **CSV or Excel:** for spreadsheet workflows and manual review
- **API access:** for automated ingestion into internal systems
- **BI and warehouses:** for reporting, dashboards, and historical analysis

### Performance

Estimated run times:

- **Small runs (< 1,000 outputs):** ~3-5 minutes
- **Medium runs (1,000-5,000 outputs):** ~5-15 minutes
- **Large runs (5,000+ outputs):** ~15-30 minutes

Execution time varies based on filters, result volume, and how much information is returned per record. Highly filtered runs can finish faster, while broad discovery or detail-rich records may take longer.

### Limitations

- Availability depends on what <https://hiring.cafe> publicly exposes at run time.
- Some optional fields may be missing on sparse records.
- Very broad searches may take longer or require higher limits.
- Target-side changes can affect field availability, naming, or record shape.
- Regional, account, or availability differences may change visible results.
- Salary and benefit fields are available only when present in the public listing data.

### Troubleshooting

- **No results returned:** check filters, location spelling, direct URLs, and whether Hiring.Cafe has matching public records.
- **Fewer results than expected:** broaden filters, raise `limit`, or verify that the target contains enough matching jobs.
- **Some fields are empty:** optional fields depend on what each job listing publicly provides.
- **Run takes longer than expected:** reduce scope, lower `limit` for validation, or split broad collection into smaller segments.
- **Output changed:** compare the current output with the field reference and report a small sample if support is needed.

### FAQ

#### What data does this actor collect?

It collects public Hiring.Cafe job listing data, including job identifiers, titles, URLs, company information, location, workplace setup, employment attributes, compensation indicators, requirements, benefits, status, source context, and description content when available.

#### Can I filter by location, category, date, salary, or other criteria?

Yes. Supported filters include `location`, `sortBy`, `dateFetchedPastNDays`, `workplaceTypes`, `commitmentTypes`, `seniorityLevel`, `roleTypes`, salary fields, company names, industries, headquarters countries, and `applicationFormEase`.

#### Can I provide direct Hiring.Cafe URLs?

Yes. Use `startUrls` for direct Hiring.Cafe search or job page URLs. You can also use `queries` for keyword-based discovery.

#### Why did I receive fewer results than my limit?

The limit is a maximum, not a guarantee. Filters, source availability, recency windows, and the number of matching public listings can all reduce the number of saved records.

#### Can I schedule recurring runs?

Yes. Use Apify schedules to run the actor daily, weekly, or on a custom cron schedule.

#### How do I avoid duplicates across runs?

Use `id` as the recommended idempotency key when syncing records into warehouses, CRMs, or search indexes. Use `url` as a secondary key if needed.

#### Can I export the data to CSV, Excel, or JSON?

Yes. Apify datasets support exports including JSON, CSV, Excel, and other formats available in Apify Console.

#### Does this actor collect private data?

The actor is intended for publicly available Hiring.Cafe job listing information. Users are responsible for ensuring their use of collected data complies with applicable laws, regulations, and terms.

#### What should I include when reporting an issue?

Include the input used with sensitive values redacted, the run ID, expected versus actual behavior, and a small output sample when helpful.

### Compliance & Ethics

#### Responsible Data Collection

This actor collects publicly available job listing information from <https://hiring.cafe> for legitimate business purposes, including:

- **Labor-market** research and market analysis
- **Recruiting operations** and talent intelligence
- **Employer monitoring** and hiring trend analysis

This section is informational and not legal advice. Users are responsible for determining whether their use of the actor and collected data complies with applicable laws, regulations, contracts, and platform terms.

#### Best Practices

- Use collected data in accordance with applicable laws, regulations, and the target site's terms
- Respect individual privacy and personal information
- Use data responsibly and avoid disruptive or excessive collection
- Do not use this actor for spamming, harassment, or other harmful purposes
- Follow relevant data protection requirements where applicable, such as GDPR and CCPA

### Support

For help, use the actor page or Issues section. Include the input used with sensitive values redacted, the run ID, expected versus actual behavior, and an optional small output sample so the issue can be reviewed efficiently.

# Actor input Schema

## `queries` (type: `array`):

Enter free-text job searches such as `software engineer`, `data analyst`, or `product manager`. Each search term runs separately and uses the filters you configure below.

## `location` (type: `string`):

Enter a city, state, country, or ZIP code, for example `Singapore`, `New York, NY`, or `94103`. Leave empty to avoid adding a location filter.

## `sortBy` (type: `string`):

Choose how Hiring Cafe should order matching jobs. Best match is broader for general discovery; most recent is useful when freshness matters most.

## `dateFetchedPastNDays` (type: `integer`):

Only include jobs Hiring Cafe has fetched within the selected number of days. Smaller values produce fresher, more targeted output; larger values broaden discovery.

## `workplaceTypes` (type: `array`):

Select which workplace setups to include, such as remote, hybrid, onsite, or a combination of them.

## `commitmentTypes` (type: `array`):

Select the employment commitments to include. Keep multiple options selected for broader coverage, or narrow the list for a more specific hiring segment.

## `seniorityLevel` (type: `array`):

Select the seniority levels to include, from no prior experience through senior-level roles.

## `roleTypes` (type: `array`):

Choose whether to include individual contributor roles, people manager roles, or both.

## `minCompensationLowEnd` (type: `number`):

Only include jobs whose listed salary range starts at or above this value.

## `maxCompensationHighEnd` (type: `number`):

Only include jobs whose listed salary range ends at or below this value.

## `restrictJobsToTransparentSalaries` (type: `boolean`):

Turn this on to keep only jobs with visible salary information. This produces cleaner compensation data but may reduce the number of saved jobs.

## `companyNames` (type: `array`):

Only include jobs from these company names. Leave empty to include all matching employers.

## `excludedCompanyNames` (type: `array`):

Exclude jobs from these company names when you want to remove known irrelevant employers from the output.

## `industries` (type: `array`):

Only include companies in these industries. Use this to focus the dataset on a specific market or sector.

## `excludedIndustries` (type: `array`):

Exclude companies in these industries when they are outside your target market.

## `companyHqCountries` (type: `array`):

Only include companies headquartered in the listed countries. Use country names or codes in the same style you use on Hiring Cafe.

## `applicationFormEase` (type: `array`):

Only include jobs matching the listed Hiring Cafe application process categories. Use this when application flow quality matters to your downstream workflow.

## `startUrls` (type: `array`):

Paste Hiring Cafe search or job page URLs. Direct URLs are useful for replaying a prepared Hiring Cafe search or collecting from specific job pages.

## `limit` (type: `integer`):

Maximum number of job records to save for each search term or direct URL. Increase this when you need broader output from each target.

## Actor input object example

```json
{
  "queries": [],
  "sortBy": "default",
  "dateFetchedPastNDays": 121,
  "workplaceTypes": [
    "Remote",
    "Hybrid",
    "Onsite",
    "Field"
  ],
  "commitmentTypes": [
    "Full Time",
    "Part Time",
    "Contract",
    "Internship",
    "Temporary",
    "Seasonal",
    "Volunteer"
  ],
  "seniorityLevel": [
    "No Prior Experience Required",
    "Entry Level",
    "Mid Level",
    "Senior Level"
  ],
  "roleTypes": [
    "Individual Contributor",
    "People Manager"
  ],
  "restrictJobsToTransparentSalaries": false,
  "companyNames": [],
  "excludedCompanyNames": [],
  "industries": [],
  "excludedIndustries": [],
  "companyHqCountries": [],
  "applicationFormEase": [],
  "startUrls": [],
  "limit": 100
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "limit": 100
};

// Run the Actor and wait for it to finish
const run = await client.actor("fatihtahta/hiring-cafe-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "limit": 100 }

# Run the Actor and wait for it to finish
run = client.actor("fatihtahta/hiring-cafe-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "limit": 100
}' |
apify call fatihtahta/hiring-cafe-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=fatihtahta/hiring-cafe-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Hiring.Cafe Scraper | Fast & Reliable",
        "description": "Extract Hiring.Cafe job listings at scale with rich company data, salary signals, remote filters, seniority, requirements, benefits, workplace attributes and full descriptions. Built for enterprise-grade labor market intelligence, recruiting operations, and automated analytics pipelines.",
        "version": "0.0",
        "x-build-id": "bOHOgBe8k4hFZfuZi"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/fatihtahta~hiring-cafe-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-fatihtahta-hiring-cafe-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/fatihtahta~hiring-cafe-scraper/runs": {
            "post": {
                "operationId": "runs-sync-fatihtahta-hiring-cafe-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/fatihtahta~hiring-cafe-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-fatihtahta-hiring-cafe-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "queries": {
                        "title": "Add Search Terms",
                        "type": "array",
                        "description": "Enter free-text job searches such as `software engineer`, `data analyst`, or `product manager`. Each search term runs separately and uses the filters you configure below.",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "location": {
                        "title": "Search Around a Location",
                        "type": "string",
                        "description": "Enter a city, state, country, or ZIP code, for example `Singapore`, `New York, NY`, or `94103`. Leave empty to avoid adding a location filter."
                    },
                    "sortBy": {
                        "title": "Choose Result Order",
                        "enum": [
                            "default",
                            "date",
                            "date_asc",
                            "compensation_desc",
                            "compensation_asc",
                            "experience_asc",
                            "experience_desc"
                        ],
                        "type": "string",
                        "description": "Choose how Hiring Cafe should order matching jobs. Best match is broader for general discovery; most recent is useful when freshness matters most.",
                        "default": "default"
                    },
                    "dateFetchedPastNDays": {
                        "title": "Limit Listings by Recency",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Only include jobs Hiring Cafe has fetched within the selected number of days. Smaller values produce fresher, more targeted output; larger values broaden discovery.",
                        "default": 121
                    },
                    "workplaceTypes": {
                        "title": "Choose Workplace Types",
                        "uniqueItems": true,
                        "type": "array",
                        "description": "Select which workplace setups to include, such as remote, hybrid, onsite, or a combination of them.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "Remote",
                                "Hybrid",
                                "Onsite",
                                "Field"
                            ],
                            "enumTitles": [
                                "Remote",
                                "Hybrid",
                                "Onsite",
                                "Field"
                            ]
                        },
                        "default": [
                            "Remote",
                            "Hybrid",
                            "Onsite",
                            "Field"
                        ]
                    },
                    "commitmentTypes": {
                        "title": "Choose Employment Types",
                        "uniqueItems": true,
                        "type": "array",
                        "description": "Select the employment commitments to include. Keep multiple options selected for broader coverage, or narrow the list for a more specific hiring segment.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "Full Time",
                                "Part Time",
                                "Contract",
                                "Internship",
                                "Temporary",
                                "Seasonal",
                                "Volunteer"
                            ],
                            "enumTitles": [
                                "Full Time",
                                "Part Time",
                                "Contract",
                                "Internship",
                                "Temporary",
                                "Seasonal",
                                "Volunteer"
                            ]
                        },
                        "default": [
                            "Full Time",
                            "Part Time",
                            "Contract",
                            "Internship",
                            "Temporary",
                            "Seasonal",
                            "Volunteer"
                        ]
                    },
                    "seniorityLevel": {
                        "title": "Choose Seniority Levels",
                        "uniqueItems": true,
                        "type": "array",
                        "description": "Select the seniority levels to include, from no prior experience through senior-level roles.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "No Prior Experience Required",
                                "Entry Level",
                                "Mid Level",
                                "Senior Level"
                            ],
                            "enumTitles": [
                                "No Prior Experience Required",
                                "Entry Level",
                                "Mid Level",
                                "Senior Level"
                            ]
                        },
                        "default": [
                            "No Prior Experience Required",
                            "Entry Level",
                            "Mid Level",
                            "Senior Level"
                        ]
                    },
                    "roleTypes": {
                        "title": "Choose Role Types",
                        "uniqueItems": true,
                        "type": "array",
                        "description": "Choose whether to include individual contributor roles, people manager roles, or both.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "Individual Contributor",
                                "People Manager"
                            ],
                            "enumTitles": [
                                "Individual Contributor",
                                "People Manager"
                            ]
                        },
                        "default": [
                            "Individual Contributor",
                            "People Manager"
                        ]
                    },
                    "minCompensationLowEnd": {
                        "title": "Set Minimum Salary",
                        "type": "number",
                        "description": "Only include jobs whose listed salary range starts at or above this value."
                    },
                    "maxCompensationHighEnd": {
                        "title": "Set Maximum Salary",
                        "type": "number",
                        "description": "Only include jobs whose listed salary range ends at or below this value."
                    },
                    "restrictJobsToTransparentSalaries": {
                        "title": "Require Published Salaries",
                        "type": "boolean",
                        "description": "Turn this on to keep only jobs with visible salary information. This produces cleaner compensation data but may reduce the number of saved jobs.",
                        "default": false
                    },
                    "companyNames": {
                        "title": "Include Companies",
                        "type": "array",
                        "description": "Only include jobs from these company names. Leave empty to include all matching employers.",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "excludedCompanyNames": {
                        "title": "Exclude Companies",
                        "type": "array",
                        "description": "Exclude jobs from these company names when you want to remove known irrelevant employers from the output.",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "industries": {
                        "title": "Include Industries",
                        "type": "array",
                        "description": "Only include companies in these industries. Use this to focus the dataset on a specific market or sector.",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "excludedIndustries": {
                        "title": "Exclude Industries",
                        "type": "array",
                        "description": "Exclude companies in these industries when they are outside your target market.",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "companyHqCountries": {
                        "title": "Choose Headquarters Countries",
                        "type": "array",
                        "description": "Only include companies headquartered in the listed countries. Use country names or codes in the same style you use on Hiring Cafe.",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "applicationFormEase": {
                        "title": "Choose Application Process Types",
                        "uniqueItems": true,
                        "type": "array",
                        "description": "Only include jobs matching the listed Hiring Cafe application process categories. Use this when application flow quality matters to your downstream workflow.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "Simple",
                                "Time Consuming"
                            ],
                            "enumTitles": [
                                "Simple | easier application flow",
                                "Time Consuming | lengthier application flow"
                            ]
                        },
                        "default": []
                    },
                    "startUrls": {
                        "title": "Add Hiring Cafe URLs",
                        "type": "array",
                        "description": "Paste Hiring Cafe search or job page URLs. Direct URLs are useful for replaying a prepared Hiring Cafe search or collecting from specific job pages.",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "limit": {
                        "title": "Set Maximum Jobs per Search",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Maximum number of job records to save for each search term or direct URL. Increase this when you need broader output from each target."
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
