AI-powered REST API that scores any text or URL for SEO effectiveness, readability, and keyword optimization — in milliseconds.
Paste any text below and see your SEO score instantly. Uses our free tier — no sign-up required to try.
Using the free tier API key. Sign up on RapidAPI for higher limits.
A single composite score and letter grade that summarizes your content's ranking potential at a glance.
Flesch-Kincaid grade level, average sentence length, and a 0–100 readability score to match your target audience.
Top keywords with usage counts and density percentages. Keyword stuffing risk level (none / low / medium / high).
Word count, heading count, paragraph count, internal/external links, meta description presence — all in one JSON response.
3 concrete, specific improvement suggestions so your users know exactly what to fix to climb the rankings.
Pass raw text directly or a URL — the API fetches and extracts the page content automatically.
Subscribe via RapidAPI or upgrade directly with your API key (billed via LemonSqueezy — EU VAT handled automatically).
Enter your existing API key to link it to your new subscription. If you don't have one yet, get a free key first.
One POST request. Any language. Get your API key on RapidAPI.
# Score text content curl -X POST 'https://ss-seo-api.duckdns.org/v1/score' \ -H 'Content-Type: application/json' \ -H 'X-API-Key: YOUR_API_KEY' \ -d '{ "text": "Your article content goes here...", "focus_keywords": ["target keyword", "secondary keyword"] }' # Score a URL curl -X POST 'https://ss-seo-api.duckdns.org/v1/score' \ -H 'Content-Type: application/json' \ -H 'X-API-Key: YOUR_API_KEY' \ -d '{"url": "https://example.com/blog/my-article"}'
const response = await fetch('https://ss-seo-api.duckdns.org/v1/score', { method: 'POST', headers: { 'Content-Type': 'application/json', 'X-API-Key': 'YOUR_API_KEY', }, body: JSON.stringify({ text: 'Your article content goes here...', focus_keywords: ['target keyword', 'secondary keyword'], }), }); const result = await response.json(); console.log(`Score: ${result.overall_score}/100 (Grade: ${result.grade})`); console.log('Suggestions:', result.suggestions);
import requests response = requests.post( "https://ss-seo-api.duckdns.org/v1/score", headers={ "Content-Type": "application/json", "X-API-Key": "YOUR_API_KEY", }, json={ "text": "Your article content goes here...", "focus_keywords": ["target keyword", "secondary keyword"], }, ) data = response.json() print(f"Score: {data['overall_score']}/100 (Grade: {data['grade']})") print("Suggestions:", data['suggestions']) print("Readability:", data['readability']['grade_level'])
"overall_score": 82, "grade": "B", "readability": { "score": 78, "grade_level": "8th grade", "avg_sentence_length": 14, "notes": "Clear and accessible writing" }, "keyword_density": { "top_keywords": [{ "word": "project management", "count": 3, "density_pct": 1.8 }], "keyword_stuffing_risk": "none" }, "structure": { "word_count": 320, "has_title": true, "heading_count": 3, "paragraph_count": 6 }, "sentiment": "positive", "suggestions": [ "Add more internal links to related content", "Include a meta description for better click-through rate", "Increase heading frequency — aim for one per 300 words" ], "strengths": [ "Good keyword density without stuffing", "Clear value proposition in opening paragraph" ], "meta": { "tier": "basic", "requests_remaining": 947, "tokens_used": 412 }
"url": "https://..." in the request body instead of "text". The API fetches the page, extracts the readable content, and returns a full score with metadata like the page title and heading structure.X-API-Key header on every request.meta.requests_remaining. Upgrade to Basic ($9.99/mo) for 1,000 requests, or Pro ($49/mo) for 10,000.