← All posts
tutorialjobs

How to build a job board with search, salary data, and resume scoring

Mahesh Naidu·6 min read

/jobs has 25 endpoints, and the three you actually need for a basic job board are /search, /salary-estimate, and /resume-score. The rest — categories, by-company, by-location, by-tag, remote-companies, visa-work-permit, market-demand — are filters and enrichment on top of the same underlying data.

Search

fetch("https://aplicious.com/api/v1/jobs/search?q=backend+engineer&limit=20", {
  headers: { "X-API-Key": "lapi_live_••••" },
});

Free-text query, capped limit of 50 per call. Combine with /by-location or /remote if your board only wants remote-eligible roles — they filter the same underlying listing set rather than requiring a separate query language.

Salary estimate

/salary-estimate and /compare-salariesgive you a number to show next to a listing even when the listing itself doesn't disclose pay — useful for boards aggregating postings that don't include a salary range.

Resume scoring — the interesting endpoint

/resume-score takes a resume_text string (and optionally a job_descriptionto score against) and returns a structured, per-section breakdown rather than one opaque number. It separately scores contact info (does it find an email, phone number, LinkedIn URL, GitHub/portfolio link via regex), experience (bullet-point count, whether dates and company names are detectable), education, action verb usage against a list of 58 strong resume verbs (“architected,” “spearheaded,” “reduced”), quantified achievements (does the text contain numbers, percentages, or dollar amounts next to accomplishments), overall length, and — when a job description is provided — keyword density overlap between the resume and the posting.

Each section comes back with its own score and specific notes — “No LinkedIn URL found — add it,” “Only 3 quantified achievements found — add metrics (%, $, user counts, time saved)” — so the response is actionable feedback, not just a grade.

const res = await fetch("https://aplicious.com/api/v1/jobs/resume-score", {
  method: "POST",
  headers: {
    "X-API-Key": "lapi_live_••••",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    resume_text: rawResumeText,
    job_description: postingText, // optional
  }),
});

This is the endpoint we'd actually recommend leading with if you're building a career-coaching product rather than a plain listing board — “upload your resume, get a score and specific section-by-section feedback” converts better than a generic job search, because it gives the user something actionable on their first visit.

Putting it together

async function jobBoardSearch(query: string) {
  const headers = { "X-API-Key": process.env.APLICIOUS_KEY! };
  const listings = await fetch(
    `https://aplicious.com/api/v1/jobs/search?q=${encodeURIComponent(query)}&limit=20`,
    { headers }
  ).then(r => r.json());

  return listings.data;
}

One key covers search, salary tools, and resume scoring — no separate vendor relationship for the career-coaching half of the product versus the listings half.

Try APlicious free
One key. 34 live namespaces. 500 free calls per month — no credit card required.
Get your free API key →
← Back to all posts