BuiltWith · AsyncAPI Specification

BuiltWith Live Feed API

Version 1.0.0

Real-time technology detection notifications over WebSocket. Subscribe to technology channels or rule channels and receive an event each time BuiltWith detects a technology on a website. Requires an active plan: Basic allows up to 2 technology subscriptions per API key, Pro up to 50. Trial and expired accounts receive obfuscated domain names.

View Spec View on GitHub Technology ProfilingLead GenerationWeb IntelligenceTechnology DetectionWebsite AnalysisMarket ResearchTechnographicsSales IntelligenceAI AgentsMCPAgentic CommerceReal-Time DataAsyncAPIWebhooksEvents

Channels

new
Connect to the live feed, then send subscribe commands to join channels. Also usable as the `new` rule channel - domains new to the pipeline whose technologies were all first detected within the last day.
technology
Connect and auto-subscribe to one technology channel. Technology names use dashes in place of spaces, for example Shopify, WordPress or Google-Analytics.

Messages

Connected
Connection confirmed
Subscribed
Subscription confirmed
Detection
Technology detection
StatusChange
Subscription level changed
ErrorMessage
Error
ClientCommand
Client subscription command

Servers

wss
live
BuiltWith live detection stream. Automatic reconnection is supported.

AsyncAPI Specification

Raw ↑
# generated: '2026-08-14'
# method: generated
# source: https://api.builtwith.com/live-feed-api and https://api.builtwith.com/llms.txt
# x-provenance: BuiltWith publishes no AsyncAPI document. Every server, channel, command and
#   message field below is transcribed from the provider's own published Live Feed API
#   documentation (channel table, client-command table, message-format samples and
#   message-field table) and the Live Feed section of llms.txt. Nothing here is invented; where
#   the docs do not state a type, the field is left untyped rather than guessed.
asyncapi: 3.0.0
info:
  title: BuiltWith Live Feed API
  version: '1.0.0'
  description: >
    Real-time technology detection notifications over WebSocket. Subscribe to technology
    channels or rule channels and receive an event each time BuiltWith detects a technology on
    a website. Requires an active plan: Basic allows up to 2 technology subscriptions per API
    key, Pro up to 50. Trial and expired accounts receive obfuscated domain names.
  contact:
    name: BuiltWith Support
    email: support@builtwith.com
    url: https://builtwith.com/contact
  externalDocs:
    description: BuiltWith Live Feed API documentation
    url: https://api.builtwith.com/live-feed-api
  license:
    name: Commercial - BuiltWith Terms of Use
    url: https://builtwith.com/terms
  tags:
  - name: Live Feed
    description: Real-time WebSocket technology detections.
  - name: Technology Detection
    description: Notifications emitted when BuiltWith detects a technology on a website.
  x-generated: '2026-08-14'
  x-method: generated
  x-source:
  - https://api.builtwith.com/live-feed-api
  - https://api.builtwith.com/llms.txt
  x-authored-by: API Evangelist enrichment pipeline
  x-provenance-note: >-
    BuiltWith publishes no AsyncAPI document. Every server, channel, command and message field
    here is transcribed from the provider's published Live Feed API documentation; this
    document is an API Evangelist generation, not a provider artifact.
defaultContentType: application/json
servers:
  live:
    host: sync.builtwith.com
    pathname: /wss
    protocol: wss
    description: BuiltWith live detection stream. Automatic reconnection is supported.
    security:
    - $ref: '#/components/securitySchemes/apiKeyQuery'
channels:
  new:
    address: /wss/new
    title: Live feed connection
    description: >
      Connect to the live feed, then send subscribe commands to join channels. Also usable as
      the `new` rule channel - domains new to the pipeline whose technologies were all first
      detected within the last day.
    servers:
    - $ref: '#/servers/live'
    messages:
      connected:
        $ref: '#/components/messages/Connected'
      subscribed:
        $ref: '#/components/messages/Subscribed'
      detection:
        $ref: '#/components/messages/Detection'
      statusChange:
        $ref: '#/components/messages/StatusChange'
      error:
        $ref: '#/components/messages/ErrorMessage'
      command:
        $ref: '#/components/messages/ClientCommand'
  technology:
    address: '/wss/channel/{technology}'
    title: Technology channel
    description: >
      Connect and auto-subscribe to one technology channel. Technology names use dashes in
      place of spaces, for example Shopify, WordPress or Google-Analytics.
    servers:
    - $ref: '#/servers/live'
    parameters:
      technology:
        description: BuiltWith technology name with spaces replaced by dashes.
        examples: [Shopify, WordPress, Google-Analytics]
    messages:
      connected:
        $ref: '#/components/messages/Connected'
      subscribed:
        $ref: '#/components/messages/Subscribed'
      detection:
        $ref: '#/components/messages/Detection'
      statusChange:
        $ref: '#/components/messages/StatusChange'
      error:
        $ref: '#/components/messages/ErrorMessage'
      command:
        $ref: '#/components/messages/ClientCommand'
operations:
  receiveDetections:
    action: receive
    channel:
      $ref: '#/channels/new'
    title: Receive live technology detections
    summary: Server-sent detection, lifecycle and error frames.
    description: >
      Frames the server pushes on an open connection - connection confirmation, subscription
      confirmation, technology detections, view-mode status changes and errors.
    messages:
    - $ref: '#/channels/new/messages/connected'
    - $ref: '#/channels/new/messages/subscribed'
    - $ref: '#/channels/new/messages/detection'
    - $ref: '#/channels/new/messages/statusChange'
    - $ref: '#/channels/new/messages/error'
  sendCommand:
    action: send
    channel:
      $ref: '#/channels/new'
    title: Manage subscriptions
    description: >
      Client-sent JSON commands that join or leave channels and list current subscriptions.
    summary: >
      Send subscribe / unsubscribe / list_subscriptions commands after connecting. Rule
      channels are `new`, `new-historical` and `premium`; any technology name is also a channel.
    messages:
    - $ref: '#/channels/new/messages/command'

  receiveTechnologyDetections:
    action: receive
    channel:
      $ref: '#/channels/technology'
    title: Receive detections for one technology
    summary: Detections for the technology channel joined at connect time.
    description: >
      When connecting to /wss/channel/{technology} the client is auto-subscribed to that
      technology and receives its detection frames without sending a subscribe command.
    messages:
    - $ref: '#/channels/technology/messages/detection'
components:
  securitySchemes:
    apiKeyQuery:
      type: httpApiKey
      name: KEY
      in: query
      description: BuiltWith API key in GUID format, supplied on the WebSocket connect URL.
  messages:
    Connected:
      name: connected
      title: Connection confirmed
      payload:
        $ref: '#/components/schemas/ConnectedPayload'
      examples:
      - name: connected
        payload:
          type: connected
          message: Connected successfully...
          available_commands: [subscribe, unsubscribe, list_subscriptions]
          view_mode: full
    Subscribed:
      name: subscribed
      title: Subscription confirmed
      payload:
        $ref: '#/components/schemas/SubscribedPayload'
      examples:
      - name: subscribed
        payload:
          type: subscribed
          channel: Shopify
          channel_id: a1b2c3d4-...
    Detection:
      name: message
      title: Technology detection
      payload:
        $ref: '#/components/schemas/DetectionPayload'
      examples:
      - name: detection
        payload:
          type: message
          channel: Shopify
          channel_id: a1b2c3d4-...
          data:
            channel_name: Shopify
            website_domain: example.com
            epoch_secs: 1770508800
    StatusChange:
      name: status_change
      title: Subscription level changed
      payload:
        $ref: '#/components/schemas/StatusChangePayload'
      examples:
      - name: upgraded
        payload:
          type: status_change
          view_mode: full
          message: Your subscription has been upgraded. You now have full data access.
    ErrorMessage:
      name: error
      title: Error
      payload:
        $ref: '#/components/schemas/ErrorPayload'
      examples:
      - name: unknown-technology
        payload:
          type: error
          message: Technology 'unknown-tech' not found
    ClientCommand:
      name: command
      title: Client subscription command
      payload:
        $ref: '#/components/schemas/ClientCommandPayload'
      examples:
      - name: subscribe-technology
        payload: {action: subscribe, channel: Shopify}
      - name: subscribe-new
        payload: {action: subscribe, channel: new}
      - name: subscribe-new-historical
        payload: {action: subscribe, channel: new-historical}
      - name: subscribe-premium
        payload: {action: subscribe, channel: premium}
      - name: unsubscribe
        payload: {action: unsubscribe, channel: Shopify}
      - name: list-subscriptions
        payload: {action: list_subscriptions}
  schemas:
    ViewMode:
      type: string
      description: >
        'full' for paid subscribers; redacted (trial/preview) for trial and expired accounts,
        which receive obfuscated domains such as grxxt.cxm instead of great.com.
      enum: [full, 'redacted (trial/preview)']
    ConnectedPayload:
      type: object
      properties:
        type:
          type: string
          const: connected
        message:
          type: string
        available_commands:
          type: array
          items:
            type: string
            enum: [subscribe, unsubscribe, list_subscriptions]
        view_mode:
          $ref: '#/components/schemas/ViewMode'
    SubscribedPayload:
      type: object
      properties:
        type:
          type: string
          enum: [subscribed, unsubscribed]
        channel:
          type: string
          description: Friendly channel name, for example Shopify or new.
        channel_id:
          type: string
          description: Internal channel id - the technology GUID, or 'new' for rule channels.
    DetectionPayload:
      type: object
      properties:
        type:
          type: string
          const: message
        channel:
          type: string
        channel_id:
          type: string
        data:
          type: object
          properties:
            channel_name:
              type: string
            website_domain:
              type: string
              description: Domain where the technology was detected; redacted for trial users.
            epoch_secs:
              type: integer
              description: Unix epoch seconds for when the detection was queued.
    StatusChangePayload:
      type: object
      properties:
        type:
          type: string
          const: status_change
        view_mode:
          $ref: '#/components/schemas/ViewMode'
        message:
          type: string
    ErrorPayload:
      type: object
      properties:
        type:
          type: string
          const: error
        message:
          type: string
    ClientCommandPayload:
      type: object
      required: [action]
      properties:
        action:
          type: string
          enum: [subscribe, unsubscribe, list_subscriptions]
        channel:
          type: string
          description: >
            A rule channel (new, new-historical, premium) or any BuiltWith technology name with
            dashes for spaces. Not used with list_subscriptions.