Text Analysis — entry 008 of 14
GeoScore
GeoScore scores any piece of content or URL for AI-search citation readiness, returning a 0-100 GEO score plus eight structural metrics and concrete fixes in a single HTTP call. It's aimed at indie developers and content teams optimizing for citation by AI answer engines rather than classic search-engine SEO, with a free tier and paid plans for bulk analysis.
GeoScore rates a piece of content for AI-search citation readiness. A live POST this run to /api/demo with a text field and no key returned HTTP 200 with a real score, six structural checks, and a list of concrete fixes.
GreatAPIs Score
Auth quickstart
- No key is needed for
/api/demo. A live POST this run with just atextfield returned a scored response, with no header or query parameter sent. /api/analyzeis the full endpoint, and it needs a key. A live POST this run with no key returnedHTTP 401:{"detail":"API key required. Provide X-RapidAPI-Key or X-GeoScore-Key header."}.
Your key is stored only in this browser (localStorage) and sent directly to the API — never to greatapis.
Score a sample article
POSThttps://api.geoscoreapi.com/api/demo
Content-Type: application/json
{"text":"# How to Choose the Right Running Shoe\n\nPicking a running shoe is not just about brand loyalty. It is about matching the shoe to your gait, your terrain, and your goals.\n\n## What Matters Most?\n\n- Cushioning level\n- Arch support\n- Weight of the shoe\n- Durability of the outsole\n\nDo you overpronate or underpronate? A gait analysis at a specialty running store answers that question in minutes.\n\n## Why Fit Beats Hype\n\nA shoe that fits your foot shape will always outperform a shoe with a famous name attached to it. Try before you buy, and replace your shoes every 300 to 500 miles."}{"geo_score":5,"word_count":98,"reading_time_mins":0.41,"reading_grade_level":5.6,"flesch_reading_ease":72.6,"has_quick_answer":false,"has_faq_section":false,"has_data_tables":false,"has_sources_section":false,"has_numbered_lists":false,"has_bullet_lists":true,"heading_count":3,"question_headings_count":1,"question_headings_pct":33.3,"fixes":["Add a Quick Answer box (50–80 words) at the top of your content before the first heading. AI engines pull this verbatim.","Add a FAQ section with 3–5 question-style headings ending in '?' that target real user queries.","Add a Sources or References section with at least 2 named, authoritative organizations. AI engines weight cited content higher.","Include at least one data table comparing values, options, or specs. Tables are heavily favored by generative search.","Convert more headings into questions (target 50%+). Question-form headings match how users actually query AI.","Reading level is grade 5.6 — too simple for technical authority. Aim for grade 8–12.","Content is 98 words. Aim for 900+ words to compete for AI-summarized answers."],"analyzed_at":"2026-09-26T20:23:09.988061Z"}The geo_score runs 0-100. This sample scores 5, which is realistic for a short article: the response's fixes array explains exactly which structural gaps hold the score down, such as a missing FAQ section or a low word count.
Developer reference
Free 50 requests/month -- per geoscoreapi.com (homepage)
Gotchas & limits
- The demo takes
textonly, not a URL. A live POST this run with{"url":"https://example.com"}and notextfield returnedHTTP 400:{"detail":"Provide 'text' in the request body."}. Send the article body itself, not a link to it. - The demo caps input at 5,000 characters. A live POST this run with a 5,001-character
textreturnedHTTP 413:{"detail":"Demo is limited to 5,000 characters. Use /api/analyze with a key for full access."}. A longer piece needs/api/analyzewith a key. - Short, plain text scores near zero. A live POST this run with a 16-word sentence and no headings or lists returned
geo_score: 0. The score rewards structure, not just word count. Headings, lists, a FAQ section, and cited sources all raise it. - CORS is open, including credentials. A live preflight this run from
Origin: https://example.comreturnedHTTP 200withaccess-control-allow-originechoing the request origin andaccess-control-allow-credentials: true, so a browser page can call the demo directly.