TextLens API for Data Engineers

Process text columns in your pandas DataFrames with one API call. Readability grades, AFINN sentiment, TF-IDF keywords — no model to deploy, no GPU to manage, no cold starts.

From the team behind textlens — 96 npm downloads/week

import pandas as pd
import requests

df = pd.read_csv("reviews.csv")

def analyze(text):
    return requests.post(
        "https://api.ckmtools.dev/v1/analyze",
        headers={"X-API-Key": TEXTLENS_KEY},
        json={"text": text}
    ).json()

# Analyze 10,000 reviews — no model required
df["sentiment"] = df["text"].apply(lambda t: analyze(t)["sentiment"]["label"])
df["grade"]     = df["text"].apply(lambda t: analyze(t)["readability"]["consensus_grade"])
df["keywords"]  = df["text"].apply(lambda t: analyze(t)["keywords"]["top_5"])
Join the Waitlist

Free tier: 1,000 req/month. No credit card required.

Why not spaCy / TextBlob / VADER?

spaCy TextBlob VADER TextLens API
Readability formulas No No No 8 formulas
Sentiment Yes Yes Yes Yes (AFINN)
Keywords (TF-IDF) No No No Yes
Install size 20MB–560MB + model 100MB+ 5MB Zero (HTTP call)
Deterministic output Yes Yes No Yes
Works in Lambda/serverless Complex Complex Yes Yes

All three Python libraries are excellent. TextLens API is not a replacement — it is the option when you want deterministic readability scores AND sentiment AND keyword extraction from one endpoint without installing NLP model files.

What data engineers use it for

Content quality scoring pipelines

Score readability of articles or product descriptions. Flesch-Kincaid, Gunning Fog, SMOG, consensus grade in one call.

Pre-training data filtering

Filter training corpus by sentiment or readability before fine-tuning. Remove low-quality samples without running a full NLP pipeline.

Feature engineering

Add readability_grade, sentiment_score, keyword_count as features in your classification pipeline.

Deterministic, not ML

TextLens API uses algorithmic formulas (Flesch-Kincaid, Dale-Chall, Gunning Fog) and AFINN word lists — not ML models. Same input always returns the same output. Easy to unit test. No model versioning issues. No concept drift.

If you need named entity recognition or dependency parsing, use spaCy. If you need readability + sentiment + TF-IDF keywords without model dependencies, TextLens API covers all three.

Batch processing

batch_analyze.py — threaded with rate limiting
import time, requests
from concurrent.futures import ThreadPoolExecutor

def analyze_batch(texts, api_key, max_workers=5, delay=0.1):
    def analyze_one(text):
        time.sleep(delay)
        r = requests.post("https://api.ckmtools.dev/v1/analyze",
            headers={"X-API-Key": api_key}, json={"text": text})
        return r.json()
    with ThreadPoolExecutor(max_workers=max_workers) as pool:
        return list(pool.map(analyze_one, texts))

results = analyze_batch(df["review_text"].tolist(), api_key=TEXTLENS_KEY)
Free tier: 1,000 req/mo. Starter $9/mo: 10k requests. Pro $29/mo: 100k requests — processes a 100k-row DataFrame in ~30 minutes at max concurrency.

vs AWS Comprehend

AWS Comprehend TextLens API Pro
100,000 requests ~$50 (at 500 chars/call) $29/month
Readability scoring Not available 8 formulas
Keyword extraction Not available TF-IDF included
Pricing model Per character Flat monthly

AWS Comprehend pricing estimates are approximate — see aws.amazon.com/comprehend/pricing.

No model to deploy. No GPU to manage.

Drop TextLens into your data pipeline in 5 minutes. 1,000 free requests, no credit card.

Notify Me When It Launches

$0 — no credit card required

General Python examples? See Python-specific examples →

← Back to TextLens API