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

# Show how the listing of an app and of each competitor matches one tracked keyword

> Reads stored data only and makes no store request. The app comes first, then every competitor. words are the distinct words of the keyword. Each listing is one localization the keyword market searches (localization and role are null on Google Play), judged field by field: phrase is the verdict of the metadata coverage table, a word match is exact, folded (found only with accents ignored, never counted) or none, and segments split the field text into matched and unmatched runs (null for a Google Play long description). placement is the strongest place the keyword reaches in one localization: a field holding the whole phrase, else split (every word across fields of that localization), else partial, else none; an app placement is the best of its listings, and words never combine across localizations. ranking null means never checked; position null means checked and not found within depth. listingCountry names the market whose listing was read, the home market when the keyword market has none. unread lists the localizations the market searches whose text has not been captured for that app. rating comes from the listing read and names its market. insight is a rule of thumb set only on a competitor that ranks above the app while the app has been checked; ignore a rule you do not know. standing.recentChange is the newest listing change of the market or keyword field save it reads, at most 28 days old.



## OpenAPI

````yaml /api-reference/openapi.json get /apps/{id}/keywords/{keywordId}/breakdown
openapi: 3.0.0
info:
  title: asobeast API
  description: >-
    Self hosted ASO toolkit API.


    A metered instance carries RateLimit-Limit, RateLimit-Remaining and
    RateLimit-Reset on every response, for the tightest limit the request
    touched. A self hosted instance has no request rate limits and sends no such
    header. Limits are per workspace, so minting more tokens does not buy more
    capacity, and they are sized per plan across three classes: read for stored
    data, write for configuration changes and store for the endpoints that reach
    the App Store or Google Play.


    A 429 carries Retry-After and a rateLimit object naming the window that
    closed, or an aiAllowance object when the workspace has spent the AI calls
    its plan includes this month. A 403 with a quota object means a plan
    capacity limit such as apps or tracked keyword markets, which is a different
    problem from a rate limit. A 402 with an entitlement object means the
    workspace needs a plan.


    Positions are 1-based and null means checked but not found within the
    captured depth, never zero. Daily granularity uses UTC dates.
  version: 1.11.0
  contact: {}
servers:
  - url: http://localhost:3000/api/backend
    description: Web origin proxy
  - url: http://localhost:4000
    description: Direct API
security:
  - personalApiToken: []
tags: []
paths:
  /apps/{id}/keywords/{keywordId}/breakdown:
    get:
      tags:
        - keywords
      summary: >-
        Show how the listing of an app and of each competitor matches one
        tracked keyword
      description: >-
        Reads stored data only and makes no store request. The app comes first,
        then every competitor. words are the distinct words of the keyword. Each
        listing is one localization the keyword market searches (localization
        and role are null on Google Play), judged field by field: phrase is the
        verdict of the metadata coverage table, a word match is exact, folded
        (found only with accents ignored, never counted) or none, and segments
        split the field text into matched and unmatched runs (null for a Google
        Play long description). placement is the strongest place the keyword
        reaches in one localization: a field holding the whole phrase, else
        split (every word across fields of that localization), else partial,
        else none; an app placement is the best of its listings, and words never
        combine across localizations. ranking null means never checked; position
        null means checked and not found within depth. listingCountry names the
        market whose listing was read, the home market when the keyword market
        has none. unread lists the localizations the market searches whose text
        has not been captured for that app. rating comes from the listing read
        and names its market. insight is a rule of thumb set only on a
        competitor that ranks above the app while the app has been checked;
        ignore a rule you do not know. standing.recentChange is the newest
        listing change of the market or keyword field save it reads, at most 28
        days old.
      operationId: KeywordsController_breakdown
      parameters:
        - name: id
          required: true
          in: path
          schema:
            type: string
        - name: keywordId
          required: true
          in: path
          schema:
            type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
components:
  securitySchemes:
    personalApiToken:
      scheme: bearer
      bearerFormat: asob
      type: http

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.