Text Analysis — entry 008 of 14

GeoScore

Verified Sep 2026

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.

geocontent-analysisai-searchseo
AuthenticationAPI KeySign up with the provider to obtain credentials.
HTTPSSupportedTraffic is encrypted in transit.
CORSEnabledCallable directly from browser JavaScript.
PricingFreemiumA usable free tier exists, with paid plans for more volume.
FormatsJSONResponses can be requested as JSON.

GreatAPIs Score

Score61out of 100
Authentication15/25API key required
Pricing17/20Freemium tier available
Docs0/20No docs or spec available
Formats9/15Single response format
Freshness20/20Verified within 6 months

Embed this badge

Scored 61 on greatapis.com
<a href="https://greatapis.com/api/geoscore/"><img src="https://greatapis.com/badge/geoscore.svg" alt="Scored 61 on greatapis.com"></a>

Auth quickstart

  1. No key is needed for /api/demo. A live POST this run with just a text field returned a scored response, with no header or query parameter sent.
  2. /api/analyze is the full endpoint, and it needs a key. A live POST this run with no key returned HTTP 401: {"detail":"API key required. Provide X-RapidAPI-Key or X-GeoScore-Key header."}.
Stored keyNo key stored

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."}

200 application/json

{"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

Rate limit

Free 50 requests/month -- per geoscoreapi.com (homepage)

Gotchas & limits

  • The demo takes text only, not a URL. A live POST this run with {"url":"https://example.com"} and no text field returned HTTP 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 text returned HTTP 413: {"detail":"Demo is limited to 5,000 characters. Use /api/analyze with a key for full access."}. A longer piece needs /api/analyze with 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.com returned HTTP 200 with access-control-allow-origin echoing the request origin and access-control-allow-credentials: true, so a browser page can call the demo directly.