Glints: Jobs Search & Career icon

Glints TapJobs data API

Glints · Jobs & Careers

Glints: Jobs Search & Career, listed on Google Play as Glints TapJobs, is the Android app of Glints, the Singapore-founded career and recruitment platform, aimed here at Indonesia's loker market with Indonesian, English and Vietnamese interfaces. Job seekers search openings by keyword, city, salary band, employment type and hybrid, remote or on-site work arrangement, browse a nearby-jobs view, and apply with one-tap Easy Apply, which can drop straight into a Chat to Apply conversation with the recruiter in an inbox that flags prioritized threads. An applications tab tracks every lamaran together with its screening questionnaire, while the Me tab assembles the candidate profile — headline, skills, work experience, education, salary expectation and a Glints resume — shareable as a public profile link. Sign-in runs through email, Facebook or Google, and a paid VIP subscription is billed through Google Play. The same binary switches into an employer role: companies pass an identity check, review Candidate Matches ranked per job, and spend contact credits to unlock a candidate's phone number and email. It serves job seekers and hiring companies across Indonesian cities, competing with Jobstreet, Kalibrr, LinkedIn, Indeed, KitaLulus, Dealls and Pintarnya.

Loker listings arrive as structured records: title, a company carrying an isVerified badge, city and countryCode, a pay band in salaryMin/salaryMax with currencyCode and salaryPeriod, employmentType, workArrangement, required skills, an isEasyApply flag, live applicantCount and publishedAt, all paged under a running totalCount. The candidate side mirrors it: public profile cards expose firstName, lastName, headline, education, recentJob and a salaryExpectation in IDR, so asked pay and offered pay share one currency and one city vocabulary.

Activity stacks on top of those records. Every application logs status, appliedAt, a source such as EASY_APPLY, questionnaireAnswers and the conversationId of the recruiter thread it opened; the threads themselves carry participants split by role, timestamped messages, an isPrioritized flag and phoneShared state. Employer-side matching adds a matchScore and an isContactUnlocked marker per talent, while VIP and contact-credit orders record orderId, sku, amount, entitlement, expiresAt and contactCreditsRemaining.

Those records feed Indonesian labour-market dashboards that chart open roles by kota, pay band, employment type and work arrangement; OSINT enrichment that builds a non-contact talent graph from public cards (name, city, skills, recent job, salary expectation); candidate CRMs that join applications to chat threads and measure the Easy Apply funnel down to time-to-first-recruiter-message; and finance bots that reconcile Play Billing purchases and employer contact-unlock spend against RevenueCat entitlements. openData Studio turns these Glints records into callable open data.

Screenshots

  • Glints: Jobs Search & Career screenshot 1
  • Glints: Jobs Search & Career screenshot 2
  • Glints: Jobs Search & Career screenshot 3
  • Glints: Jobs Search & Career screenshot 4
  • Glints: Jobs Search & Career screenshot 5
  • Glints: Jobs Search & Career screenshot 6
  • Glints: Jobs Search & Career screenshot 7
  • Glints: Jobs Search & Career screenshot 8

API surface

The endpoints and request/response examples below are reconstructed from the app's interface — illustrative, not a live capture.

  • Search jobs (GraphQL)

    POST /v1/graphql opendata

    Returns a paginated TapLoker listing page (title, company, salaryMin/salaryMax, workArrangement, countryCode, isEasyApply) used by the home job-search and nearby-jobs screens.

    Auth: Optional OAuth2 Bearer access token. Anonymous browse still sends x-glints-country-code (ID) and the app client credentials. Signed-in search personalises nearby and recommended loker.

    • searchJobs
    • totalCount
    • id
    • slug
    • title
    • description
    • company
    • name
    • logoUrl
    • isVerified
    • city
    • countryCode
    • salaryMin
    • salaryMax
    • currencyCode
    • salaryPeriod
    • employmentType
    • workArrangement
    • skills
    • isEasyApply
    • applicantCount
    • publishedAt
    POST /v1/graphql?op=searchJobs HTTP/1.1
    Authorization: Bearer <access-token>
    Content-Type: application/json
    x-glints-country-code: ID
    
    {
      "operationName": "searchJobs",
      "variables": {
        "keyword": "software engineer",
        "location": "Jakarta",
        "countryCode": "ID",
        "workArrangement": "HYBRID",
        "employmentType": "FULL_TIME",
        "salaryMin": 8000000,
        "limit": 20,
        "offset": 0
      }
    }
    {
      "data": {
        "searchJobs": {
          "totalCount": 1284,
          "jobs": [{
            "id": "8f3c1a2e-4b90-4d11-9c77-0a1b2c3d4e5f",
            "slug": "software-engineer-jakarta",
            "title": "Software Engineer",
            "description": "Build marketplace services in Jakarta.",
            "company": {
              "id": "co-4412",
              "name": "Example Corp",
              "logoUrl": "https://cdn.example.com/company/4412.png",
              "isVerified": true
            },
            "city": "Jakarta",
            "countryCode": "ID",
            "salaryMin": 15000000,
            "salaryMax": 22000000,
            "currencyCode": "IDR",
            "salaryPeriod": "MONTHLY",
            "employmentType": "FULL_TIME",
            "workArrangement": "HYBRID",
            "skills": ["Kotlin", "GraphQL"],
            "isEasyApply": true,
            "applicantCount": 42,
            "publishedAt": "2026-09-24T02:15:00Z"
          }]
        }
      }
    }
  • Fetch public candidate profile

    GET /v1/profiles/public/{userId} osint

    Loads the public candidate card (firstName, lastName, salaryExpectation, city, skills, recentJob) used by the profile tab and by employers browsing talent.

    Auth: Optional Bearer access token. Public candidate cards resolve without a session; email, phone and resume stay on the signed-in Me tab.

    • id
    • firstName
    • lastName
    • profilePic
    • headline
    • city
    • country
    • countryCode
    • salaryExpectation
    • currencyCode
    • recentJob
    • title
    • company
    • skills
    • education
    • resume
    • lastSeen
    GET /v1/profiles/public/c0ffee00-1111-2222-3333-444455556666 HTTP/1.1
    Authorization: Bearer <access-token>
    Accept: application/json
    x-glints-country-code: ID
    {
      "id": "c0ffee00-1111-2222-3333-444455556666",
      "firstName": "Ada",
      "lastName": "Setiawan",
      "profilePic": "https://cdn.example.com/profile/ada.png",
      "headline": "Backend engineer",
      "city": "Jakarta",
      "country": "Indonesia",
      "countryCode": "ID",
      "salaryExpectation": 18000000,
      "currencyCode": "IDR",
      "recentJob": {"title": "Software Engineer", "company": "Example Corp"},
      "skills": ["Kotlin", "PostgreSQL"],
      "education": [{"school": "Universitas Indonesia", "degree": "S1"}],
      "resume": null,
      "lastSeen": "2026-09-25T10:02:00Z"
    }
  • List job applications

    GET /v1/talent/applications osint

    Returns the signed-in candidate's Easy Apply / Chat to Apply history (status, appliedAt, job title, questionnaireAnswers, conversationId) for the applications tab.

    Auth: OAuth2 Bearer access token from the candidate session (email/Facebook/Google sign-in). Required; anonymous users cannot read lamaran history.

    • totalCount
    • jobApplications
    • id
    • status
    • appliedAt
    • source
    • EASY_APPLY
    • job
    • title
    • company
    • city
    • resumeId
    • questionnaireAnswers
    • conversationId
    GET /v1/talent/applications?status=SUBMITTED&limit=20&offset=0 HTTP/1.1
    Authorization: Bearer <access-token>
    Accept: application/json
    x-glints-country-code: ID
    {
      "totalCount": 7,
      "jobApplications": [{
        "id": "app-7788",
        "status": "CHAT_INITIATED",
        "appliedAt": "2026-09-20T09:01:00Z",
        "source": "EASY_APPLY",
        "job": {
          "id": "8f3c1a2e-4b90-4d11-9c77-0a1b2c3d4e5f",
          "title": "Software Engineer",
          "company": {"id": "co-4412", "name": "Example Corp"},
          "city": "Jakarta"
        },
        "resumeId": "resume-9",
        "questionnaireAnswers": [{"questionId": "q-1", "answer": "Immediate"}],
        "conversationId": "conv-334"
      }]
    }
  • Open recruiter chat socket

    GET /v1/chat/socket osint

    Opens the Chat to Apply thread (jobId, participants, messages, isPrioritized, phoneShared) used by the inbox after an Easy Apply.

    Auth: OAuth2 Bearer access token as a WebSocket query/header credential. The inbox upgrades HTTP to a live socket on this path; a parallel app-wide socket carries presence and notification events.

    • conversation
    • id
    • jobId
    • jobTitle
    • participants
    • role
    • firstName
    • lastName
    • displayName
    • messages
    • body
    • senderId
    • createdAt
    • status
    • isPrioritized
    • phoneShared
    GET /v1/chat/socket HTTP/1.1
    Upgrade: websocket
    Connection: Upgrade
    Authorization: Bearer <access-token>
    Sec-WebSocket-Protocol: graphql-transport-ws
    x-glints-country-code: ID
    {
      "type": "next",
      "payload": {
        "data": {
          "conversation": {
            "id": "conv-334",
            "jobId": "8f3c1a2e-4b90-4d11-9c77-0a1b2c3d4e5f",
            "jobTitle": "Software Engineer",
            "participants": [{
              "id": "c0ffee00-1111-2222-3333-444455556666",
              "role": "CANDIDATE",
              "firstName": "Ada",
              "lastName": "Setiawan"
            }, {
              "id": "emp-9001",
              "role": "EMPLOYER",
              "displayName": "HR Example Corp"
            }],
            "messages": [{
              "id": "msg-12",
              "body": "Hi Ada, can we chat about the role?",
              "senderId": "emp-9001",
              "createdAt": "2026-09-20T09:05:00Z",
              "status": "SEEN"
            }],
            "isPrioritized": true,
            "phoneShared": false
          }
        }
      }
    }
  • Create VIP / credit billing order

    POST /v1/billing/orders openfinance

    Creates a VIP subscription or employer contact-credit order (orderId, sku, amount, entitlement, contactCreditsRemaining) after a Play Billing purchase.

    Auth: OAuth2 Bearer access token. Play Billing / RevenueCat confirms the SKU; this endpoint records the Glints-side order for VIP and employer contact credits.

    • orderId
    • sku
    • productType
    • VIP_SUBSCRIPTION
    • platform
    • status
    • amount
    • currencyCode
    • entitlement
    • expiresAt
    • playPurchaseToken
    • revenueCatAppUserId
    • contactCreditsRemaining
    • contactCreditsExpireAt
    POST /v1/billing/orders HTTP/1.1
    Authorization: Bearer <access-token>
    Content-Type: application/json
    x-glints-country-code: ID
    
    {
      "sku": "vip_monthly",
      "productType": "VIP_SUBSCRIPTION",
      "platform": "ANDROID",
      "countryCode": "ID",
      "currencyCode": "IDR",
      "playPurchaseToken": "<play-billing-token>",
      "revenueCatAppUserId": "<rc-app-user-id>"
    }
    {
      "orderId": "po-5566",
      "sku": "vip_monthly",
      "productType": "VIP_SUBSCRIPTION",
      "status": "PAID",
      "amount": 99000,
      "currencyCode": "IDR",
      "entitlement": "vip",
      "expiresAt": "2026-10-26T00:00:00Z",
      "contactCreditsRemaining": 25,
      "contactCreditsExpireAt": "2026-10-26T00:00:00Z"
    }
  • Fetch recommended talent (employer)

    GET /v1/talent-matches osint

    Returns employer-side Candidate Matches (firstName, salaryExpectation, matchScore, isContactUnlocked) for a job, gated on remaining contact credits.

    Auth: OAuth2 Bearer access token for an employer session. The same binary switches candidate/employer roles. Unlocking phone/email spends contact credits from the billing-orders endpoint.

    • totalCount
    • contactCreditsRemaining
    • talents
    • id
    • firstName
    • lastName
    • headline
    • city
    • countryCode
    • salaryExpectation
    • matchScore
    • skills
    • recentJob
    • isContactUnlocked
    • phone
    • email
    GET /v1/talent-matches?jobId=8f3c1a2e-4b90-4d11-9c77-0a1b2c3d4e5f&countryCode=ID&limit=20 HTTP/1.1
    Authorization: Bearer <access-token>
    Accept: application/json
    x-glints-country-code: ID
    {
      "totalCount": 86,
      "contactCreditsRemaining": 25,
      "talents": [{
        "id": "c0ffee00-1111-2222-3333-444455556666",
        "firstName": "Ada",
        "lastName": "Setiawan",
        "headline": "Backend engineer",
        "city": "Jakarta",
        "countryCode": "ID",
        "salaryExpectation": 18000000,
        "currencyCode": "IDR",
        "matchScore": 0.86,
        "skills": ["Kotlin", "PostgreSQL"],
        "recentJob": {"title": "Software Engineer", "company": "Example Corp"},
        "isContactUnlocked": false,
        "phone": null,
        "email": null
      }]
    }

Data categories

  • job listings
  • candidate profiles
  • applications
  • recruiter chat
  • VIP subscriptions
  • employer contact credits

Where teams use this data

  • Indonesia loker market census

    A labour-market dashboard pages POST /v1/graphql searchJobs with countryCode=ID and reads title, city, salaryMin/salaryMax, employmentType and workArrangement to chart open roles by kota and pay band.

  • Public talent-graph enrichment

    An OSINT workflow resolves public candidate deeplinks to GET /v1/profiles/public/{userId} and stores firstName, lastName, city, skills, recentJob and salaryExpectation as a non-contact candidate graph.

  • Easy Apply funnel analytics

    A candidate CRM pulls GET /v1/talent/applications (status, source=EASY_APPLY, conversationId) and joins the recruiter-chat socket threads to measure time-to-first-recruiter-message.

  • VIP and contact-credit reconciliation

    Finance bots match Play Billing tokens to POST /v1/billing/orders (orderId, sku, amount, entitlement, contactCreditsRemaining) so employer unlock spend lines up with RevenueCat entitlements.

Frequently asked questions

Which API areas does the Glints app expose?

Job and profile traffic runs on the main data API (GraphQL job search, public candidate profiles, application history, plus a live socket for app-wide events); the recruiter inbox upgrades to a WebSocket chat socket; VIP and contact-credit checkout goes through a billing-orders endpoint. The page maps the path-level surface.

How does Glints authenticate mobile calls?

The app signs in with email, Facebook or Google via OAuth2. Subsequent JSON calls send an Authorization: Bearer access token plus an x-glints-country-code header (ID on TapLoker); anonymous browse still sends the country code and app client credentials.

What candidate fields sit behind the public profile endpoint?

GET /v1/profiles/public/{userId} is the public card: firstName, lastName, city, skills, recentJob, salaryExpectation. Email, phone and resume stay on the signed-in Me tab or an employer contact-unlock.

Does the same app serve employers?

Yes. Role-switch controls flip the binary from candidate to employer. Employers page GET /v1/talent-matches and spend contact credits created via POST /v1/billing/orders.

Apps similar to Glints: Jobs Search & Career

  • Jobstreet: Smart job matching — JobStreet by SEEK is a long-running general job board in Indonesia with free employer posting across Malaysia, Singapore, the Philippines and Indonesia.
  • Kalibrr — Kalibrr is a Filipino-founded job platform strongest in the Philippines and Indonesia, using AI to match candidates with openings.
  • LinkedIn: Community & Network — LinkedIn is a professional network used in Indonesia for jobs plus career branding, often for mid-to-senior and specialist hiring rather than volume junior listings.
  • Indeed Job Search — Indeed is a job-search engine that aggregates openings from many sources and is used in Indonesia for high-volume operational and entry-level hiring.
  • KitaLulus — KitaLulus is a local Indonesian platform aimed at mass-market, regional and entry-level operational roles rather than tech or senior professional hiring.
  • Dealls — Dealls is an Indonesian job platform with free postings and a bundled ATS used by local companies for startup and digital roles.
  • Pintarnya Job Search from Home — Pintarnya is an Indonesian job-seeker app listed alongside Glints for one-tap apply to local vacancies, including operational and entry-level loker.

Topics

  • Glints API
  • Glints TapJobs
  • TapLoker
  • Glints GraphQL
  • candidate profile
  • VIP checkout
  • Indonesia job search API
  • Easy Apply
  • recruiter chat
  • talent matches

Need this app's data API integrated?

We deliver scoped integrations for any named app — from USD 500 with source-code handoff, or hosted access billed per call. Tell us the data you need.

  • NDA + SOW on every engagement
  • Delivery in 3–7 days
  • Payment only after acceptance
  • Work scoped to authorized use

Get a quote