DEV Community

Daniel Igel
Daniel Igel

Posted on

Measure reading ease and extract keywords from any text — Flesch-Kincaid and more via REST API

Adding readability scoring to your app usually means pulling in a full NLP library — Flesch-Kincaid alone requires syllable counting, sentence splitting, and word frequency logic. The Text Stats & Readability API bundles all of it in a pure Node.js REST service with no ML, no external model calls.

POST /api/v1/analyze returns everything in one shot — Flesch Reading Ease, Flesch-Kincaid Grade Level, top keywords with frequency and density, plus word/sentence/paragraph counts:

curl --request POST \
  --url 'https://text-stats-readability-api.p.rapidapi.com/api/v1/analyze' \
  --header 'x-rapidapi-key: YOUR_RAPIDAPI_KEY' \
  --header 'x-rapidapi-host: text-stats-readability-api.p.rapidapi.com' \
  --header 'content-type: application/json' \
  --data '{"text": "Your article or blog post goes here.", "topN": 10}'
Enter fullscreen mode Exit fullscreen mode

The response includes fleschReadingEase (0–100, higher = easier), fleschKincaidGrade (US school grade level), and interpretation ("Easy", "Standard", "Difficult", etc.). The topKeywords array gives each keyword's count and density percentage after stop-word filtering.

const res = await fetch(
  'https://text-stats-readability-api.p.rapidapi.com/api/v1/analyze',
  {
    method: 'POST',
    headers: {
      'x-rapidapi-key': process.env.RAPIDAPI_KEY,
      'x-rapidapi-host': 'text-stats-readability-api.p.rapidapi.com',
      'content-type': 'application/json',
    },
    body: JSON.stringify({ text: articleBody, topN: 10 }),
  }
);
const { fleschReadingEase, fleschKincaidGrade, topKeywords } = await res.json();
Enter fullscreen mode Exit fullscreen mode

Need just one metric? POST /api/v1/readability returns Flesch scores only; POST /api/v1/keywords returns keywords only; POST /api/v1/summary/stats returns word, sentence, paragraph, and character counts.

Free tier on RapidAPI: https://rapidapi.com/danieligel/api/text-stats-readability-api

Do you currently gate content on a readability target, or do you use readability scores more as a post-publish signal?

Top comments (0)