Discover/Co API
live

Co APIbri.co.id

Access Bank BRI job vacancies via API. Paginated listings with filters by area, title, and position code, plus full job detail including description and deadline.

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

What is the Co API?

The BRI Careers API exposes 2 endpoints that cover Bank BRI's official e-recruitment portal, returning paginated job vacancy listings and full per-job detail. The list_jobs endpoint supports filtering by regional office, job title substring, position code, and vacancy status, while get_job returns the complete description, posting date, application deadline, placement location, and active/expired status for a single vacancy identified by its job ID.

This call costs1 credit / call— charged only on success
Try it
Hiring area (regional office) code. Omitted = all areas.
Free-text search over the job title (case-insensitive substring, e.g. mantri). Omitted = no title filter.
Zero-based index of the first job to return; the site pages in steps of 5. Use `next_offset` from the previous response.
Filter by the site's vacancy status. Omitted = both active and expired vacancies.
Position code from the site's position dropdown (e.g. JAM = Junior Associate Mantri, AO1 = Relationship Manager Kredit, FO1 = Relationship Manager Dana). Unknown codes are forwarded to the site and simply yield an empty result. Omitted = all positions.
api.parse.bot/scraper/75601d68-6fb6-4bba-833c-98ca282c48fb/<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/75601d68-6fb6-4bba-833c-98ca282c48fb/list_jobs?area=KW07' \
  -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 bri-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: BRI Careers SDK — browse vacancies and fetch full details."""
from parse_apis.bri_co_id_api import BriCareers, JobStatus, JobNotFound

client = BriCareers()

# List all expired vacancies, capped at 5 items total.
for summary in client.job_summaries.list(status=JobStatus.EXPIRED, limit=5):
    print(summary.title, "|", summary.location, "| deadline:", summary.apply_before)

# Drill into the first result's full detail via typed navigation.
summary = client.job_summaries.list(status=JobStatus.EXPIRED, limit=1).first()
if summary is not None:
    job = summary.details()
    print(job.title)
    print("posted:", job.posted_at, "| office:", job.regional_office)
    print(job.description[:200])

# Point-lookup using the identifier discovered above.
if summary is not None:
    try:
        detail = client.jobs.get(job_id=summary.job_id)
        print(detail.title, "—", detail.status)
    except JobNotFound:
        print("job no longer listed")

print("exercised: job_summaries.list / details / jobs.get")
All endpoints · 2 totalmissing one? ·

Returns one page of job vacancies from BRI's e-recruitment portal, newest first, exactly as the site lists them: 5 jobs per page (fixed by the site). Each row carries the job title, the hiring regional office (location), the position/job family the site classifies the vacancy under, the application deadline (ISO date plus the site's own text), the site's active/expired status badge, the job_id and the direct URL of the listing page. Pagination is offset-based: pass `offset` (0, 5, 10, ...) and follow `next_offset` until `has_more` is false; `total` is the site's count for the current filter combination. Optional filters are forwarded to the site: free-text title search, hiring area (regional office code), position code, and active/expired status. An empty filter result (for example status=active when no vacancy is open) is a successful response with `jobs: []` and `total: 0`. The posting (publication) date is not shown in the list; use get_job for it.

Input
ParamTypeDescription
areastringHiring area (regional office) code. Omitted = all areas.
titlestringFree-text search over the job title (case-insensitive substring, e.g. mantri). Omitted = no title filter.
offsetintegerZero-based index of the first job to return; the site pages in steps of 5. Use `next_offset` from the previous response.
statusstringFilter by the site's vacancy status. Omitted = both active and expired vacancies.
positionstringPosition code from the site's position dropdown (e.g. JAM = Junior Associate Mantri, AO1 = Relationship Manager Kredit, FO1 = Relationship Manager Dana). Unknown codes are forwarded to the site and simply yield an empty result. Omitted = all positions.
Response
{
  "type": "object",
  "fields": {
    "jobs": "array of job rows on this page (title, location = hiring regional office, position, apply_before ISO date, apply_before_text as displayed, status active|expired, job_id, url)",
    "total": "site-reported number of jobs matching the current filters",
    "offset": "offset echoed for this page",
    "has_more": "true when another page exists",
    "next_offset": "offset to request the next page, or null on the last page"
  },
  "sample": {
    "data": {
      "jobs": [
        {
          "url": "https://e-recruitment.bri.co.id/jobs/view/v04Gn25Wop5EeVNO",
          "title": "PEMBUKAAN REKRUTMEN BRILIAN BANKING ASSOCIATE PROGRAM (BBAP) BATCH 2 TAHUN 2026 REGION 11 / YOGYAKARTA",
          "job_id": "v04Gn25Wop5EeVNO",
          "status": "expired",
          "location": "Regional Office Yogyakarta",
          "position": "Junior Associate Mantri",
          "apply_before": "2026-07-31",
          "apply_before_text": "Jul 2026, 31"
        }
      ],
      "total": 3,
      "offset": 0,
      "has_more": false,
      "next_offset": null
    },
    "status": "success"
  }
}

About the Co API

What the API Returns

The list_jobs endpoint returns up to 5 job rows per page — the fixed page size used by BRI's portal — ordered newest first. Each row includes the job title, the hiring regional office (location), a position/job-family label, the application deadline as both an ISO date (apply_before) and the site's original display text, and a job_id you can pass to the detail endpoint. The total field reports how many vacancies match the active filters, and has_more / next_offset let you walk through subsequent pages by passing next_offset as the offset parameter on the next call.

Filtering and Pagination

list_jobs accepts four optional filters: area (regional office code), title (case-insensitive substring match against the job title), position (a position code from the site's dropdown, e.g. JAM for Junior Associate Mantri or AO1 for Relationship Manager), and status (to restrict results to active or expired vacancies only). Omitting all filters returns all vacancies across all areas and positions. Pagination is zero-based via the offset parameter; increment by 5 or use the next_offset value from the previous response.

Job Detail

The get_job endpoint accepts a job_id (the opaque identifier from list_jobs.jobs[*].job_id) and returns the full vacancy record: title, regional_office, location (placement city/region, which can differ from the hiring office), position, status (active or expired), posted_at as ISO YYYY-MM-DD (null if the site text is unparseable), posted_at_text as the site's literal display string, apply_before deadline, the description as newline-separated paragraphs, and the canonical url of the listing page.

Reliability & maintenanceVerified

The Co API is a managed, monitored endpoint for bri.co.id — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when bri.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 bri.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
  • Aggregate BRI open positions into an internal HR dashboard filtered by regional office using the area parameter
  • Build a job-alert service that polls list_jobs with a title keyword and notifies users when new matches appear
  • Track application deadlines across BRI vacancies by reading the apply_before ISO date field from list_jobs
  • Display the full job description and placement location on a third-party careers site using get_job
  • Monitor whether previously listed vacancies have changed status from active to expired via the status field in get_job
  • Filter vacancies by position code (e.g. JAM, AO1) to surface only relevant roles for a specific candidate profile
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 Bank BRI provide an official developer API for its job listings?+
Bank BRI does not publish a public developer API for its e-recruitment portal. The careers data is only surfaced through the portal at bri.co.id/karir.
How does pagination work in `list_jobs`, and why are there always exactly 5 results per page?+
The BRI portal fixes its page size at 5 vacancies. The offset parameter controls the zero-based starting index. Each response includes has_more (boolean) and next_offset (integer or null); pass next_offset as offset in your next call to advance through pages. On the last page, next_offset is null.
What is the difference between `location` and `regional_office` in the `get_job` response?+
regional_office is the BRI hiring unit responsible for the vacancy (e.g. a regional kanwil). location is the city or region where the selected candidate will actually be placed. These can differ — for example, a Kanwil Jakarta posting may place the hire in a branch outside Jakarta.
Does the API cover BRI internship programs or PKWT contract postings separately from regular vacancies?+
The API returns whatever vacancies the BRI portal lists under its standard listing view; it does not segment results by employment type (permanent, PKWT, internship) because that distinction is not exposed as a filterable field. The description field in get_job may contain employment-type details in the body text. You can fork this API on Parse and revise it to add an employment-type filter if BRI introduces that field on the portal.
Can I retrieve the list of valid `area` or `position` filter codes?+
The API does not currently expose a dedicated endpoint to enumerate valid area or position codes. Known examples include position codes like JAM (Junior Associate Mantri) and AO1 (Relationship Manager). You can fork this API on Parse and revise it to add a lookup endpoint that returns the full set of dropdown values.
Page content last updated . Spec covers 2 endpoints from bri.co.id.
Related APIs in JobsSee all →
posindonesia.co.id API
Access data from posindonesia.co.id.
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.
group.bnpparibas API
Search and browse current job and internship opportunities at BNP Paribas by filtering across contract types, countries, business domains, and keywords. Access detailed information about specific positions to help you find the right career opportunity at the organization.
vald.breezy.hr API
Access data from vald.breezy.hr.
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.
morbis.id API
Find current job opportunities and browse available products from Morbis, Indonesia's healthcare management platform. Access up-to-date career listings and product information to explore employment options or discover healthcare solutions.
jobs.jobvite.com API
Access data from jobs.jobvite.com.
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.