# Gupy Job Listings Scraper

> Gupy Job Listings Scraper is a paid API for AI agents from api.scrapeforagents.tech, paid per call via x402, $0.025/call, status unknown (last checked 2026-10-02).

Scrapes and returns structured job vacancy data from the Gupy platform, filterable by Brazilian state, city, company, job type, and workplace type.

## Facts

- Endpoint: POST https://api.scrapeforagents.tech/v1/gupy?utm_source=zero.xyz
- Price: $0.025/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-02
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/gupy-job-listings-scraper-eb55c520
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_E5Bmd2TaFx-lmTo-H8rxs

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability gupy-job-listings-scraper-eb55c520 -d '<json body>'
```

Example prompt: Search Gupy for the 50 newest remote or hybrid software engineering jobs in São Paulo, sorted by newest first, across all companies.

## When to prefer this

Use this endpoint when you specifically need structured job data from the Gupy platform, which hosts career pages for a large number of Brazilian companies. Prefer this over generic web scrapers when you need clean, schema-normalized vacancy records with filtering by Brazilian geography, job type, and workplace modality without building your own scraper.

## Known failure modes

- Empty results if no jobs match the given filters — call is not charged
- Timeout or partial results if maxResults is very large and source has many listings
- Invalid city or state names may silently return zero results
- Unknown company career-page names will be ignored with no matches
- Rate or budget limits may truncate results before maxResults is reached

## How this service works

Pay-per-call structured web data. Failed or empty runs are not charged.

## Output

Returns a JSON object with a count of matching jobs and an array of job records, each containing the job ID, code, name, URL, description, prerequisites, responsibilities, and plain-text description scraped from Gupy career pages.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "state": {
   "type": "string",
   "default": "",
   "description": "Filter by Brazilian state name, for example São Paulo. Empty searches all states."
  },
  "cities": {
   "type": "array",
   "items": {
    "type": "string"
   },
   "default": [],
   "description": "City names as shown in listings. Empty includes every city."
  },
  "sortBy": {
   "enum": [
    "newest",
    "oldest"
   ],
   "type": "string",
   "default": "newest",
   "description": "Return newest or oldest publication dates first."
  },
  "jobTypes": {
   "type": "array",
   "items": {
    "enum": [
     "vacancy_type_effective",
     "vacancy_type_apprentice",
     "vacancy_type_internship",
     "vacancy_legal_entity",
     "vacancy_type_trainee",
     "vacancy_type_temporary",
     "vacancy_type_freelancer",
     "vacancy_type_outsource",
     "vacancy_type_talent_pool",
     "vacancy_type_volunteer",
     "vacancy_type_parter",
     "vacancy_type_summer",
     "vacancy_type_intermittent"
    ],
    "type": "string",
    "enumTitles": [
     "Full-time",
     "Apprentice",
     "Internship",
     "Legal entity",
     "Trainee",
     "Temporary",
     "Freelancer",
     "Outsourced",
     "Talent pool",
     "Volunteer",
     "Partner",
     "Summer",
     "Intermittent"
    ]
   },
   "default": [],
   "description": "Filter by Gupy vacancy type codes. Empty includes all types."
  },
  "companies": {
   "type": "array",
   "items": {
    "type": "string"
   },
   "default": [],
   "description": "Exact career-page names to search, one per line. Empty searches every career page."
  },
  "maxResults": {
   "type": "integer",
   "default": 100,
   "maximum": 100000,
   "minimum": 0,
   "description": "Stop after this many full job records. Set 0 to continue until the source has no more jobs or the run budget is reached."
  },
  "searchTerm": {
   "type": "string",
   "default": "",
   "description": "Find vacancies containing this term. Empty searches all public jobs."
  },
  "workplaceTypes": {
   "type": "array",
   "items": {
    "enum": [
     "remote",
     "hybrid",
     "on-site"
    ],
    "type": "string",
    "enumTitles": [
     "Remote",
     "Hybrid",
     "On-site"
    ]
   },
   "default": [],
   "description": "Include remote, hybrid, and/or on-site vacancies. Empty includes all types."
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "count": 1,
  "items": [
   {
    "id": null,
    "code": null,
    "name": null,
    "jobUrl": null,
    "description": null,
    "prerequisites": null,
    "responsibilities": null,
    "descriptionPlainText": null
   }
  ],
  "product": "gupy"
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/gupy-job-listings-scraper-eb55c520/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from api.scrapeforagents.tech](https://www.zero.xyz/host/api.scrapeforagents.tech/llms.txt)
