tech.waow.typeahead.searchActors

typeahead.waow.tech

Documentation

Prefix search for atproto actors, ordered for typeahead use. Served entirely from a community-run index (https://typeahead.waow.tech); unauthenticated, CORS-enabled, results edge-cached for 60s. Also served at app.bsky.actor.searchActorsTypeahead as a drop-in migration alias with an identical response.

main query
1 example

Prefix search for atproto actors, ordered for typeahead use. Served entirely from a community-run index (https://typeahead.waow.tech); unauthenticated, CORS-enabled, results edge-cached for 60s. Also served at app.bsky.actor.searchActorsTypeahead as a drop-in migration alias with an identical response.

Parameters

limit integer Optional

Maximum number of actors to return.

q string Required

Search prefix; matched case-insensitively against handles and display names (CJK display names are matched via bigrams).

Output

Encodingapplication/json
actors array Required

Matching actors, best match first. Ranking blends prefix quality with a stored popularity score; actors hidden by moderation are excluded.

Try It

Requests are sent directly from your browser. Some servers may block requests due to CORS.

Base URL for XRPC calls (e.g., https://api.bsky.social)
Parameters
Maximum number of actors to return.
Search prefix; matched case-insensitively against handles and display names (CJK display names are matched via bigrams).
View raw schema
{
  "type": "query",
  "output": {
    "schema": {
      "type": "object",
      "required": [
        "actors"
      ],
      "properties": {
        "actors": {
          "type": "array",
          "items": {
            "ref": "#actorBasic",
            "type": "ref"
          },
          "description": "Matching actors, best match first. Ranking blends prefix quality with a stored popularity score; actors hidden by moderation are excluded."
        }
      }
    },
    "encoding": "application/json"
  },
  "parameters": {
    "type": "params",
    "required": [
      "q"
    ],
    "properties": {
      "q": {
        "type": "string",
        "description": "Search prefix; matched case-insensitively against handles and display names (CJK display names are matched via bigrams)."
      },
      "limit": {
        "type": "integer",
        "default": 10,
        "maximum": 100,
        "minimum": 1,
        "description": "Maximum number of actors to return."
      }
    }
  },
  "description": "Prefix search for atproto actors, ordered for typeahead use. Served entirely from a community-run index (https://typeahead.waow.tech); unauthenticated, CORS-enabled, results edge-cached for 60s. Also served at app.bsky.actor.searchActorsTypeahead as a drop-in migration alias with an identical response."
}
actorBasic object
2 examples

Basic actor profile. Matches the shape of app.bsky.actor.defs#profileViewBasic minus the authenticated viewer state, so results are interchangeable with bluesky's for unauthenticated use.

Properties

associated unknown Optional

Pass-through of app.bsky.actor.defs#profileAssociated as last seen from the actor's profile (lists, feedgens, starter packs, chat settings); absent if never observed.

avatar string uri Optional

Avatar image URL — usually a bluesky CDN URL, but may point directly at the actor's PDS blob endpoint for accounts bluesky's CDN no longer serves.

createdAt string datetime Optional

Account creation time as reported by the actor's profile view; absent if unknown.

did string did Required

The actor's decentralized identifier.

displayName string Optional

Self-declared display name from the actor's profile record; absent if unset.

maxLength: 640 bytesmaxGraphemes: 64 graphemes
handle string handle Required

The actor's current handle, e.g. zzstoatzz.io.

labels unknown Optional

Pass-through of the actor's com.atproto.label.defs#label array (self-labels and moderation-service labels) as last seen; may be empty.

View raw schema
{
  "type": "object",
  "required": [
    "did",
    "handle"
  ],
  "properties": {
    "did": {
      "type": "string",
      "format": "did",
      "description": "The actor's decentralized identifier."
    },
    "avatar": {
      "type": "string",
      "format": "uri",
      "description": "Avatar image URL — usually a bluesky CDN URL, but may point directly at the actor's PDS blob endpoint for accounts bluesky's CDN no longer serves."
    },
    "handle": {
      "type": "string",
      "format": "handle",
      "description": "The actor's current handle, e.g. zzstoatzz.io."
    },
    "labels": {
      "type": "unknown",
      "description": "Pass-through of the actor's com.atproto.label.defs#label array (self-labels and moderation-service labels) as last seen; may be empty."
    },
    "createdAt": {
      "type": "string",
      "format": "datetime",
      "description": "Account creation time as reported by the actor's profile view; absent if unknown."
    },
    "associated": {
      "type": "unknown",
      "description": "Pass-through of app.bsky.actor.defs#profileAssociated as last seen from the actor's profile (lists, feedgens, starter packs, chat settings); absent if never observed."
    },
    "displayName": {
      "type": "string",
      "maxLength": 640,
      "description": "Self-declared display name from the actor's profile record; absent if unset.",
      "maxGraphemes": 64
    }
  },
  "description": "Basic actor profile. Matches the shape of app.bsky.actor.defs#profileViewBasic minus the authenticated viewer state, so results are interchangeable with bluesky's for unauthenticated use."
}

Lexicon Garden

@