> ## Documentation Index
> Fetch the complete documentation index at: https://docs.base44.com/llms.txt
> Use this file to discover all available pages before exploring further.

# SEO

> Read and change how an app appears to search engines and AI crawlers with the Base44 Apps API

The SEO endpoints let you read and change an app's search and AI-crawler settings, run a scan that scores the app's SEO health, and preview the files Base44 generates for `llms.txt` and structured data before you publish either.

Use these endpoints to:

* Read and change an app's SEO settings, such as its meta tags, robots and sitemap toggles, and per-page overrides.
* Run a scan and read its score and checklist, or read back the last one without running a new scan.
* Preview the `llms.txt` file and the Schema.org markup Base44 would generate, before you publish either.

## The score and the checklist

A scan produces two things, and they answer different questions.

* The score is a single 0-100 number with a letter grade, plus a per-category breakdown. Use it to track SEO health at a glance, or to compare it over time.
* The checklist is the individual checks behind that score, each one a pass, warning, or failure, with a description and, where Base44 can act on it, a fix action. Use it to see specifically what's wrong and what to do about it.

[Run SEO scan](/api-reference/run-seo-scan) produces both and returns them together. [Get SEO score](/api-reference/get-seo-score) and [Get last SEO scan](/api-reference/get-last-seo-scan) read them back afterward without running a new scan, the score alone or the checklist alone.

## Categories

Both the score and the checklist group checks into these categories:

* `meta_tags`
* `crawlability`
* `structured_data`
* `ai_discoverability`
* `content_quality`
* `indexing_performance`, only when Google Search Console integration is enabled for the calling user, covering checks that read Search Console data directly

## Search eligibility

Base44 counts an app as search-eligible when it's public. A private or workspace app never is, and an app that requires a login qualifies only where Base44 has turned search indexing on for it. A workspace enforcing single sign-on overrides all of this. An app in that workspace is never search-eligible, even one that would otherwise qualify.

This check gates several things. The live `/llms.txt` path, live JSON-LD injection, and the `ai_discoverability` category in a scan all depend on it.

## When llms.txt goes live

The live `/llms.txt` path checks two things, in order. First, the app must be published and search-eligible. Fail either and the path 404s regardless of your settings. Search-eligibility is also what decides whether a scan reports on `llms.txt` at all, so a scan of a private app leaves that check out while a scan of an unpublished public one still reports it, even though the path 404s for now.

Past that, `llms_txt_enabled` and `seo_disabled` choose which file the app serves. With the toggle off, or SEO disabled, Base44 falls back to the `llms.txt` you deployed with the app yourself, and 404s only when there isn't one. Neither setting removes a file of your own.

## When JSON-LD markup goes live

Base44 injects saved `custom_json_ld` markup only into a page of a search-eligible app, with `seo_disabled` off and `platform_jsonld_injection_enabled` on. Saving the markup with [Update SEO settings](/api-reference/update-seo-settings) isn't enough on its own. Check all three settings when markup you saved isn't appearing on the page.
