Discover/Co API
live

Co APIposindonesia.co.id

Fetch job vacancies from the Pos Indonesia career page. Get title, employment type, department, posting date, and URL via 2 structured endpoints.

Endpoint health
verified 3h ago
list_jobs
list_departments
2/2 passing latest checkself-healing
Endpoints
2
Updated
3h ago

What is the Co API?

The Pos Indonesia Careers API exposes 2 endpoints that return structured job vacancy data from the Pos Indonesia career page (posindonesia.co.id/id/karir). The list_jobs endpoint delivers paginated vacancy rows — each including job title, employment type, department, posting date, location, and a direct URL to the listing. The list_departments endpoint returns the department vocabulary needed to filter jobs by department.

This call costs1 credit / call— charged only on success
Try it
1-based page number.
Vacancies per page; values above 100 are clamped to 100.
Free-text filter matched against the job title (substring). Omitted = all titles.
Department filter: department_id from list_departments.departments[*].department_id. Omitted = all departments.
Employment type filter from the career page's 'Kategori' dropdown. Omitted = all types.
api.parse.bot/scraper/0007bfdb-3372-45f0-bbb7-adf0898b9e1e/<endpoint>
Ready to send
Fill in the parameters and hit sign in to send to see live response data here.
Call it over HTTPgrab a free API key at signup
curl -X GET 'https://api.parse.bot/scraper/0007bfdb-3372-45f0-bbb7-adf0898b9e1e/list_jobs?page=1&limit=10&search=engineer&department=65a8f7159ea4cfd5043d5e84&employment_type=permanent' \
  -H 'X-API-Key: $PARSE_API_KEY'
Python SDK · recommended

Typed, relational, agent-ready

A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.

  • Fully typed · autocompletes
  • Objects link to objects
  • Typed errors & pagination

Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:

uv add parse-sdk
uv run parse init
uv run parse add --marketplace posindonesia-co-id-api

uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.

"""Walkthrough: Pos Indonesia Careers API — browse departments and vacancies."""
from parse_apis.posindonesia_co_id_api import PosIndonesia, EmploymentType, InputFormatInvalid

client = PosIndonesia()

# List all departments to discover filter values.
for dept in client.departments.list(limit=10):
    print(dept.department_id, dept.name)

# Pick the first department and use its id to filter job listings.
dept = client.departments.list(limit=1).first()
if dept is not None:
    for job in client.jobs.list(department=dept.department_id, limit=5):
        print(job.job_title, job.employment_type, job.posting_date)

# Filter by employment type using the enum.
try:
    for job in client.jobs.list(employment_type=EmploymentType.INTERNSHIP, limit=5):
        print(job.job_title, job.location, job.url)
except InputFormatInvalid as e:
    # Raised when the API rejects a filter value.
    print("invalid filter:", e.message)

print("exercised: departments.list / jobs.list (by department, by employment_type)")
All endpoints · 2 totalmissing one? ·

Returns one page of job vacancies currently published on the Pos Indonesia career page, newest first. Each row is one vacancy with job_title, employment_type (permanent, internship or contract), department, posting_date (ISO 8601 UTC timestamp of publication), and url (the career page pre-filtered to that vacancy; the site has no per-vacancy detail pages). location is null unless the site attaches a location to the vacancy — at build time the career page listed zero vacancies, so this field, and the filter effects, could not be observed on real rows. A valid empty page is returned as jobs=[] with total=0, exactly as the site shows when no vacancy is open. Pagination: page (1-based, default 1) and limit (default 20, max 100); has_more reports whether a further page exists. One upstream request per call.

Input
ParamTypeDescription
pageinteger1-based page number.
limitintegerVacancies per page; values above 100 are clamped to 100.
searchstringFree-text filter matched against the job title (substring). Omitted = all titles.
departmentstringDepartment filter: department_id from list_departments.departments[*].department_id. Omitted = all departments.
employment_typestringEmployment type filter from the career page's 'Kategori' dropdown. Omitted = all types.
Response
{
  "type": "object",
  "fields": {
    "jobs": "array of vacancy rows: job_id, job_title, location (string or null), employment_type, department_id, department (name), posting_date (ISO 8601), updated_at (ISO 8601), url",
    "page": "integer current page",
    "total": "integer total number of vacancies matching the filters across all pages",
    "has_more": "boolean, true when a following page exists",
    "total_pages": "integer number of pages"
  },
  "sample": {
    "data": {
      "jobs": [],
      "page": 1,
      "total": 0,
      "has_more": false,
      "total_pages": 1
    },
    "status": "success"
  }
}

About the Co API

Endpoints and Response Shape

The list_jobs endpoint returns vacancies sorted newest-first, with each row containing job_id, job_title, location (string or null), employment_type (permanent, internship, or contract), department_id, department (human-readable name), and posting_date as an ISO 8601 UTC timestamp. The response also includes page, total, total_pages, and has_more for pagination. The limit parameter accepts up to 100 vacancies per page; higher values are clamped to 100.

Filtering and Search

list_jobs supports three independent filters. search matches a substring against the job title — useful for targeting specific roles. department accepts a department_id from list_departments, which mirrors the 'Departemen' dropdown on the career page. employment_type mirrors the 'Kategori' dropdown and accepts values such as permanent, internship, or contract. Filters can be combined freely; omitting any filter returns all matching vacancies.

Department Vocabulary

The list_departments endpoint returns the complete department list used on the career page, with each entry containing a department_id (the opaque identifier to pass to list_jobs) and a name in Indonesian. At build time the set contained 2 departments. This endpoint takes no parameters and is designed as a single lookup call to populate filter options before querying list_jobs.

Reliability & maintenanceVerified

The Co API is a managed, monitored endpoint for posindonesia.co.id — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when posindonesia.co.id changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.

This isn't an official posindonesia.co.id API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.

Last verified
3h ago
Latest check
2/2 endpoints passing
Maintenance
Monitored & self-healing
Will this API break when the source site changes?+
It's built not to. Every endpoint is health-checked on a schedule with automated test probes. When the source site changes and a check fails, the API is automatically queued for repair and re-verified — that's the self-healing layer. Each API page shows when its endpoints were last verified. And because marketplace APIs are shared, any fix reaches everyone using it.
Is this an official API from the source site?+
No — Parse APIs are independent, managed REST wrappers over publicly available data. That is the point: where a site has no official API (or only a limited one), Parse gives you a maintained, monitored endpoint for that data and keeps it working as the site changes — so you get a stable contract over a source that never promised one.
Can I fix or extend this API myself if I need a new endpoint or field?+
Yes — and you don't have to wait on us. This API was generated by the Parse agent, which stays attached. Describe the change in plain English ("add an endpoint that returns reviews", "fix the price field") in the revise box on the API page or via the revise_api MCP tool, and the agent rebuilds it against the live site in minutes. Contributing the change back to the public API is free.
What happens if I call an endpoint that has an issue?+
Errors are machine-readable: a bad call returns a clean status with the list of available endpoints and a repair hint, so an agent (or you) can recover or trigger a fix instead of failing silently. Confirmed failures feed the automatic repair queue.
Common use cases
  • Monitor new Pos Indonesia job postings automatically by checking posting_date on a schedule
  • Filter internship or contract vacancies using the employment_type parameter to surface short-term roles
  • Build a department-specific job alert by combining department_id from list_departments with list_jobs filters
  • Aggregate job listing counts across departments to track hiring volume trends over time
  • Extract direct vacancy URLs from the url field to deep-link users straight to application pages
  • Search for specific roles by passing a job title substring to the search parameter
Pricing & limitsSee full pricing →
TierPriceCredits/monthRate limit
Free$0/mo2005 req/min
Hobby$30/mo1,00020 req/min
Developer$100/mo5,000100 req/min
Team$300/mo20,000300 req/min
Company$1,000/mo100,000500 req/min

Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.

Frequently asked questions
Does Pos Indonesia provide an official developer API for its career page?+
Pos Indonesia does not publish a documented public developer API for its career or job listings data.
What does list_jobs return and how does pagination work?+
list_jobs returns an array of vacancy objects under the jobs key, each with job_id, job_title, location, employment_type, department_id, department name, posting_date (ISO 8601 UTC), and a url. The response also includes page, total, total_pages, and has_more. Use the page parameter (1-based) to step through results; limit controls rows per page up to a maximum of 100.
Does the API return application deadlines or salary information for each vacancy?+
Not currently. The API returns job_title, employment_type, department, posting_date, location, and a direct vacancy URL — no application deadline or salary fields are exposed. You can fork the API on Parse and revise it to add those fields if the source page surfaces them.
How many departments are available for filtering, and are sub-departments included?+
The list_departments endpoint returned 2 departments at build time, matching the 'Departemen' dropdown on the career page. Sub-department or team-level breakdowns are not currently included. You can fork the API on Parse and revise it to add finer-grained department groupings if the source exposes them.
Can I retrieve historical or closed job postings through this API?+
The API reflects vacancies currently published on the Pos Indonesia career page. Listings that have been closed or removed from the page are not included. You can fork the API on Parse and revise it to persist historical records in your own data layer.
Page content last updated . Spec covers 2 endpoints from posindonesia.co.id.
Related APIs in JobsSee all →
bri.co.id API
Access data from bri.co.id.
id.indeed.com API
Search and discover job openings across Indonesia with detailed information like job titles, companies, locations, salaries, and full job descriptions. Browse thousands of listings from Indeed Indonesia to find opportunities that match your career goals.
karirlink.id API
Browse job openings from Karirlink.id, Indonesia's leading platform for fresh graduates and entry-level positions, with customizable filters to find roles that match your experience level. View complete job details including requirements, responsibilities, and application information for each listing.
jobz.pk API
Access real-time job listings from jobz.pk and filter by category, city, organization, newspaper, province, and sector to find positions that match your needs. Get detailed job information, browse government and overseas opportunities, and explore company profiles all in one place.
japan-dev.com API
japan-dev.com API
jobvision.ir API
Access data from jobvision.ir.
ph.jobstreet.com API
Search for jobs and explore detailed listings from JobStreet Philippines, including job descriptions, company profiles, and hiring information. Discover employment opportunities by browsing job classifications and viewing all open positions from specific companies.
poslovi.infostud.com API
Search and browse job listings from Serbia's top job board, view detailed job information with employer profiles and salary benchmarks. Filter opportunities by job categories and discover insights about employers hiring on Infostud.