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

# Búsqueda de anuncios de la empresa

> Busca anuncios publicados por empresas. Consulta la [guía de búsqueda de anuncios](/es/developer-guides/search/advertisement-search).



## OpenAPI

````yaml es-openapi POST /companies/advertisements/search
openapi: 3.0.0
info:
  description: >-
    La API de Pubrio ofrece inteligencia de expansión de mercado —señales en
    tiempo real que indican cuándo una empresa entra en un nuevo mercado— junto
    con los datos de empresas y personas que las respaldan. Busca, consulta y
    enriquece cuentas y contactos, y suscríbete a señales de movimiento tipadas
    y fechadas en más de 200 mercados.
  version: 1.0.0
  title: Pubrio OpenAPI
  termsOfService: https://pubrio.com/es/terms-of-service
  contact:
    email: king.lai@pubrio.com
    name: King Lai
    url: https://pubrio.com/es/get-in-touch
  license:
    name: Apache 2.0
    url: http://www.apache.org/licenses/LICENSE-2.0.html
servers:
  - url: https://api.pubrio.com
security:
  - pubrio_api_key: []
tags:
  - name: Profile
    description: Información del perfil del espacio de trabajo y estadísticas de uso
  - name: Enrichment
    description: Enriquece registros de personas y empresas con datos B2B detallados
  - name: Lookalike
    description: Encuentra empresas similares a una empresa determinada
  - name: Search
    description: Busca personas, empresas, empleos, noticias y anuncios con filtros
  - name: Lookup
    description: >-
      Consulta información detallada de personas, empresas, empleos, noticias,
      anuncios y tecnologías específicos
  - name: LinkedIn
    description: Consulta datos de personas y empresas mediante URL de perfil de LinkedIn
  - name: Redeem
    description: >-
      Canjea créditos para desbloquear datos de contacto de personas (individual
      y por lotes)
  - name: Channels
    description: >-
      Gestiona plantillas de canales de contacto (crear, actualizar, eliminar,
      listar)
  - name: Monitor
    description: >-
      Crea y gestiona monitores de datos con webhooks, estadísticas y
      procesamiento
  - name: Filters
    description: >-
      Obtén los valores de filtro disponibles para los parámetros de búsqueda
      (tecnologías, ubicaciones, verticales, etc.)
  - name: API Keys
    description: >-
      Lista e inspecciona los registros de solicitudes a la API y las analíticas
      de uso de las claves de API
  - name: Insights
    description: >-
      Información agregada de señales para empresas (empleos, noticias,
      anuncios).
  - name: Export
    description: Exportaciones de datos masivas (sujetas a créditos).
  - name: Expansion
    description: >-
      Inteligencia de expansión de mercado de empresas: señales, etapas,
      mercados y exportaciones.
externalDocs:
  description: >-
    La API de Pubrio se utiliza para buscar, previsualizar y enriquecer
    contactos y cuentas. La base de datos de Pubrio ofrece amplios datos de
    contactos B2B e inteligencia de ventas.
  url: https://docs.pubrio.com
paths:
  /companies/advertisements/search:
    post:
      tags:
        - Search
      summary: Buscar anuncios de empresas
      description: >-
        Busca anuncios publicados por empresas. Consulta la [guía de búsqueda de
        anuncios](/es/developer-guides/search/advertisement-search).
      operationId: companies_search_advertisements
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                target_locations:
                  $ref: '#/components/schemas/target_locations'
                exclude_target_locations:
                  $ref: '#/components/schemas/exclude_target_locations'
                search_terms:
                  $ref: '#/components/schemas/search_terms'
                headlines:
                  $ref: '#/components/schemas/headlines'
                filter_conditions:
                  $ref: '#/components/schemas/ads_filter_conditions'
                start_dates:
                  $ref: '#/components/schemas/start_dates'
                end_dates:
                  $ref: '#/components/schemas/end_dates'
                active_dates:
                  $ref: '#/components/schemas/advertisement_active_dates_search'
                created_at:
                  $ref: '#/components/schemas/search_created_at'
                company_locations:
                  $ref: '#/components/schemas/company_locations'
                companies:
                  $ref: '#/components/schemas/companies'
                advertisement_search_id:
                  allOf:
                    - $ref: '#/components/schemas/advertisement_search_id'
                  description: >-
                    Devuelve únicamente este registro. Útil para volver a
                    obtener una fila que guardaste antes sin paginar.
                domains:
                  $ref: '#/components/schemas/domains'
                linkedin_urls:
                  $ref: '#/components/schemas/company_linkedin_urls'
                is_realtime_enrichment:
                  $ref: '#/components/schemas/is_realtime_enrichment'
                advertisement_formats:
                  $ref: '#/components/schemas/advertisement_formats'
                reach_tiers:
                  $ref: '#/components/schemas/advertisement_reach_tiers'
                advertisement_active_ads:
                  $ref: '#/components/schemas/advertisement_active_ads'
                advertisement_running_ads:
                  $ref: '#/components/schemas/advertisement_running_ads'
                advertisement_total_ads:
                  $ref: '#/components/schemas/advertisement_total_ads'
                advertisement_platform_count:
                  $ref: '#/components/schemas/advertisement_platform_count'
                advertisement_format_count:
                  $ref: '#/components/schemas/advertisement_format_count'
                advertisement_impressions_estimate:
                  $ref: '#/components/schemas/advertisement_impressions_estimate'
                advertisement_country_activity:
                  $ref: '#/components/schemas/advertisement_country_activity'
                source_types:
                  $ref: '#/components/schemas/advertisement_source_types'
                exclude_source_types:
                  $ref: '#/components/schemas/advertisement_exclude_source_types'
                enrichment_mode:
                  $ref: '#/components/schemas/advertisement_enrichment_mode'
                per_page:
                  $ref: '#/components/schemas/per_page'
                page:
                  $ref: '#/components/schemas/page'
                is_ascending_order:
                  $ref: '#/components/schemas/is_ascending_order'
                publisher_platforms:
                  $ref: '#/components/schemas/advertisement_publisher_platforms'
                exclude_publisher_platforms:
                  $ref: >-
                    #/components/schemas/advertisement_exclude_publisher_platforms
                is_include_unlinked_companies:
                  $ref: >-
                    #/components/schemas/advertisement_is_include_unlinked_companies
      responses:
        '200':
          description: >-
            Respuesta exitosa que contiene los detalles de la búsqueda de
            anuncios de empresas.
          content:
            application/json:
              schema:
                type: object
                properties:
                  metadata:
                    $ref: '#/components/schemas/advertisement_search_metadata'
                  data:
                    type: object
                    properties:
                      pagination:
                        $ref: '#/components/schemas/search_pagination'
                      advertisements:
                        type: array
                        items:
                          $ref: '#/components/schemas/advertisement_search_result'
              example:
                metadata:
                  profile: null
                  filters:
                    source_types:
                      - linkedin
                    per_page: 25
                    language: en
                  ignored_fields: []
                  applied_source_types:
                    - linkedin
                data:
                  pagination:
                    page: 1
                    per_page: 25
                    total_entries: 694356
                    total_pages: 27775
                    total_display_pages: 250
                    is_timeout: false
                  advertisements:
                    - target_country_codes:
                        - US
                        - GB
                        - SG
                      advertisement_id: 3af8cb80-9a04-49a8-832d-333961d5f77a
                      advertisement_search_id: 3af8cb80-9a04-49a8-832d-333961d5f77a
                      created_at: '2026-03-03T01:46:35.909Z'
                      last_modified: '2026-03-03T12:46:25.289Z'
                      started_at: '2026-02-25T00:00:00.000Z'
                      ended_at: '2026-03-02T00:00:00.000Z'
                      title: Thuraya-4 Satellite Solutions for Energy
                      source_type: linkedin
                      advertisement_format: Single Image Ad
                      video_url: null
                      image_url: >-
                        https://buckets.pubrio.com/images/public/cL1U5ghYPAy65qc4cu5wtmgzv8P9xJgrofNTwohPWsyT3S5ob2zNp6Jov1nM9aaDRy.jpg
                      carousel_images: null
                      destination_url: >-
                        https://www.thuraya.com/en/thuraya-4-ngs/home/index.html?trk=ad_library_ad_preview_headline_content
                      companies:
                        logo_url: >-
                          https://buckets.pubrio.com/company-logo/MjA3NTQ4NjQyM2lsajlzc25qMXNwYWNlNDIuYWlsaW5rZWRpbl82NDIyMjM3NA==.jpg
                        domain_search_id: fe3963dc-87a4-4016-8c95-217ea68cd57a
                        company_name: Space42
                        linkedin_name: space42ai
                        country_code: AE
                        domain: space42.ai
                      raw_link_url: null
                      publisher_platforms: null
                      advertisement_format_normalized: image
                      is_company_matched: true
                      advertiser: Thuraya
                      advertiser_url: https://www.linkedin.com/company/thuraya
                      advertisement_url: https://www.linkedin.com/ad-library/detail/1518455034
                      total_impressions: < 1k
                      total_impressions_lower: null
                      total_impressions_upper: 1000
                    - target_country_codes:
                        - US
                        - GB
                        - SG
                      advertisement_id: 47eb6229-e7aa-427f-bcd3-76e154fd5022
                      advertisement_search_id: 47eb6229-e7aa-427f-bcd3-76e154fd5022
                      created_at: '2026-06-03T22:00:33.035Z'
                      last_modified: '2026-06-05T18:15:51.823Z'
                      started_at: '2026-05-25T07:00:00.000Z'
                      ended_at: '2026-06-03T07:00:00.000Z'
                      title: Dubai Opportunities. One Exclusive Event
                      source_type: facebook
                      advertisement_format: DCO
                      video_url: null
                      image_url: >-
                        https://buckets.pubrio.com/images/public/4snZgJwKCWEYwAUwxrkkK1ooEFEAMF92Xet6Bm16oAyqwUSoqekDjX8S9DmfixutuH.jpg
                      carousel_images: null
                      destination_url: >-
                        https://promotions.damacproperties.com/en/event-in-egypt-social-specific/
                      raw_link_url: http://fb.me/
                      publisher_platforms:
                        - facebook
                        - instagram
                      companies:
                        logo_url: >-
                          https://buckets.pubrio.com/company-logo/MjYwODA0MjRkYW1hY3Byb3BlcnRpZXMuY29tbGlua2VkaW5fcF9sb2dvMTU=.jpg
                        domain_search_id: 9da7386c-5bdc-42b2-8fee-456e91024a3a
                        company_name: Damac Properties
                        linkedin_name: damac-properties
                        country_code: AE
                        domain: damacproperties.com
                      advertisement_format_normalized: image
                      is_company_matched: true
                      advertiser: Thuraya
                      advertiser_url: https://www.linkedin.com/company/thuraya
                      advertisement_url: https://www.linkedin.com/ad-library/detail/1518455034
                      total_impressions: < 1k
                      total_impressions_lower: null
                      total_impressions_upper: 1000
                    - ...
        '400':
          $ref: '#/components/responses/general_error'
        '429':
          $ref: '#/components/responses/rate_limit_error'
        '500':
          $ref: '#/components/responses/server_error'
components:
  schemas:
    target_locations:
      type: array
      items:
        type: string
      example:
        - TW
        - AE
        - 'NO'
      description: >-
        Filtra anuncios para incluir aquellos dirigidos a ubicaciones
        específicas por código de país. Úsalo para encontrar anuncios que se
        están mostrando en países concretos. Se combina con `filter_conditions`
        usando el operador OR: el anuncio debe estar dirigido al menos a una de
        las ubicaciones especificadas.
    exclude_target_locations:
      type: array
      items:
        type: string
      example:
        - IS
        - GB
        - FR
        - IE
        - ES
      description: >-
        Filtra anuncios para excluir aquellos dirigidos a ubicaciones
        específicas por código de país. Úsalo para descartar anuncios que se
        están mostrando en países concretos. Cuando se especifica en
        `filter_conditions` con el operador 'or', el anuncio no debe estar
        dirigido a ninguna de las ubicaciones excluidas.
    search_terms:
      type: array
      items:
        type: string
      example:
        - pubrio
      description: Una lista de cadenas sobre las que queremos filtrar los resultados.
    headlines:
      type: array
      items:
        type: string
      example:
        - ASUS
        - iPhone
      description: Una lista de titulares para filtrar los resultados de búsqueda.
    ads_filter_conditions:
      type: array
      items:
        type: object
        properties:
          key:
            type: string
            enum:
              - target_locations
              - exclude_target_locations
            example: exclude_target_locations
            description: >-
              La clave de filtro que especifica a qué propiedad aplicar el
              operador.
          operator:
            type: string
            enum:
              - or
              - and
            example: or
            description: >-
              El operador lógico a aplicar. Usa 'or' para hacer coincidir
              anuncios que incluyan/excluyan cualquiera de las ubicaciones
              especificadas, o 'and' para hacer coincidir anuncios que
              incluyan/excluyan todas las ubicaciones especificadas.
      description: >-
        Opciones de filtrado avanzado para búsquedas de anuncios. Especifica
        condiciones para refinar los resultados de búsqueda del endpoint de
        búsqueda de anuncios.
    start_dates:
      type: array
      items:
        type: string
        format: date
      example:
        - '2025-12-01'
        - '2025-12-01'
      description: Una lista de fechas de inicio para filtrar los resultados de búsqueda.
    end_dates:
      type: array
      items:
        type: string
        format: date
      example:
        - '2025-12-25'
        - '2025-12-25'
      description: Una lista de fechas de fin para filtrar los resultados de búsqueda.
    advertisement_active_dates_search:
      type: array
      items:
        type: string
        format: date
      minItems: 2
      maxItems: 2
      example:
        - '2026-08-01'
        - '2026-08-31'
      description: >-
        Ventana inclusiva `[from, to]` (UTC). Devuelve los anuncios que
        estuvieron activos en algún momento de ese intervalo, incluidos los que
        comenzaron antes, de modo que coincide con Advertisement Insights. Los
        anuncios sin fecha se cuentan a partir de `created_at`. Se requieren
        ambas fechas, `from` ≤ `to`.
    search_created_at:
      type: string
      format: date-time
      example: '2026-09-02T12:00:00Z'
      description: >-
        Ingerido en este instante o después (UTC). Fecha o marca de tiempo ISO.
        Para sincronizaciones incrementales, pasa el `created_at` de tu registro
        almacenado más reciente.
    company_locations:
      type: array
      items:
        type: string
      example:
        - US
        - SG
        - CN
      description: >-
        La ubicación de la sede de la empresa. Consulta los endpoints `location`
        en la pestaña Filters para más información.
    companies:
      type: array
      items:
        type: string
        format: uuid
      description: >-
        Una lista de identificadores únicos (domain_search_id) utilizada para
        operaciones de búsqueda de empresas y personas.
    advertisement_search_id:
      type: string
      format: uuid
      example: a92643e8-9033-4029-aa65-ef929327cebb
      description: >-
        Identificador único para el resultado de búsqueda de anuncios. Se usa
        para referenciar anuncios específicos devueltos por el endpoint de
        búsqueda de anuncios.
    domains:
      type: array
      items:
        type: string
      example:
        - pubrio.com
      description: >-
        Lista de dominios de empresa utilizada para operaciones de búsqueda de
        empresas y personas. Si recibimos una URL como `www.pubrio.com` o
        `https://docs.pubrio.com/`, el sistema la convertirá a `pubrio.com` para
        su procesamiento.
    company_linkedin_urls:
      type: array
      items:
        type: string
      example:
        - https://www.linkedin.com/company/pubrio
      description: >-
        La URL completa del perfil de LinkedIn de la empresa. La URL debe
        empezar por `http` y contener `linkedin.com/company/`
    is_realtime_enrichment:
      type: boolean
      default: false
      example: true
      description: >-
        Activa el enriquecimiento en tiempo real para una única consulta con
        alcance de empresa (filtrada por `domain_search_id`, `domains` o
        `linkedin_urls`). Cuando la búsqueda inicial devuelve cero resultados,
        el endpoint extrae la fuente, persiste los registros y vuelve a ejecutar
        la búsqueda antes de responder. Sujeto a un límite de tiempo por ruta.
    advertisement_formats:
      type: array
      items:
        type: string
        enum:
          - image
          - video
          - text
          - carousel
          - dynamic_product
          - document
          - message
          - event
          - article
          - spotlight
          - follow
          - job
          - engagement
      example:
        - image
        - video
      description: >-
        Encuentra empresas con al menos un anuncio en cualquiera de estos
        formatos creativos.
    advertisement_reach_tiers:
      type: array
      items:
        type: string
        enum:
          - lt_1k
          - 1k_10k
          - 10k_50k
          - 50k_100k
          - 100k_500k
          - 500k_1m
          - 1m_plus
      example:
        - 100k_500k
        - 500k_1m
        - 1m_plus
      description: >-
        Rango de impresiones del anuncio: `lt_1k`, `1k_10k`, `10k_50k`,
        `50k_100k`, `100k_500k`, `500k_1m`, `1m_plus`. Los anuncios sin valor de
        `total_impressions` nunca coinciden; los slugs desconocidos no coinciden
        con nada.
    advertisement_active_ads:
      type: array
      items:
        type: integer
        nullable: true
      minItems: 2
      maxItems: 2
      example:
        - 1
        - null
      description: >-
        Recuento mínimo y máximo de anuncios actualmente activos de la empresa,
        en todos los países. Usa `null` para un límite abierto, por ejemplo `[1,
        null]` para "al menos un anuncio activo".
    advertisement_running_ads:
      type: array
      items:
        type: integer
        nullable: true
      minItems: 2
      maxItems: 2
      example:
        - 1
        - null
      description: >-
        Recuento mínimo y máximo de anuncios de la empresa que siguen activos
        (sin fecha de fin, o con fecha de fin futura). Actualmente solo se
        completa para anuncios de LinkedIn.
    advertisement_total_ads:
      type: array
      items:
        type: integer
        nullable: true
      minItems: 2
      maxItems: 2
      example:
        - 10
        - null
      description: >-
        Recuento mínimo y máximo del total de anuncios registrados de la
        empresa, en todos los países.
    advertisement_platform_count:
      type: array
      items:
        type: integer
        nullable: true
      minItems: 2
      maxItems: 2
      example:
        - 2
        - null
      description: >-
        Número mínimo y máximo de plataformas publicitarias distintas (linkedin,
        facebook, google, tiktok, apple) en las que la empresa está anunciando
        activamente.
    advertisement_format_count:
      type: array
      items:
        type: integer
        nullable: true
      minItems: 2
      maxItems: 2
      example:
        - 2
        - null
      description: >-
        Número mínimo y máximo de formatos creativos de anuncio distintos que la
        empresa está utilizando activamente.
    advertisement_impressions_estimate:
      type: array
      items:
        type: integer
        nullable: true
      minItems: 2
      maxItems: 2
      example:
        - 1000
        - null
      description: >-
        Impresiones estimadas de anuncios, mínimas y máximas, sumadas en todos
        los países. Solo se cuentan los anuncios con un rango de impresiones
        reportado.
    advertisement_country_activity:
      type: object
      properties:
        country:
          type: string
          example: US
          description: >-
            Código de país ISO 3166-1 alfa-2 al que se limita este filtro.
            Obligatorio.
        rank:
          type: array
          items:
            type: integer
            nullable: true
          minItems: 2
          maxItems: 2
          example:
            - null
            - 500
          description: >-
            Posición dentro de ese país según el volumen publicitario. 1 es el
            mayor anunciante, y el número aumenta a medida que disminuye el
            volumen publicitario. Usa `[null, 500]` para encontrar a los 500
            mayores anunciantes de ese país; usa `[500, null]` para encontrar a
            todos los que ocupan la posición 500 o inferior.
        percentile:
          type: array
          items:
            type: number
            nullable: true
          minItems: 2
          maxItems: 2
          example:
            - 90
            - null
          description: >-
            Percentil dentro de ese país según el volumen publicitario, de 0 a
            100. Un valor más alto indica un mayor anunciante. Usa `[90, null]`
            para el 10% superior de anunciantes de ese país.
        volume_score:
          type: array
          items:
            type: number
            nullable: true
          minItems: 2
          maxItems: 2
          example:
            - 0.5
            - null
          description: >-
            La puntuación subyacente de volumen publicitario, de 0 a 1, a partir
            de la cual se calculan tanto `rank` como `percentile`.
        active_ads:
          type: array
          items:
            type: integer
            nullable: true
          minItems: 2
          maxItems: 2
          example:
            - 1
            - null
          description: Anuncios activos mínimos y máximos, limitados a este país.
        running_ads:
          type: array
          items:
            type: integer
            nullable: true
          minItems: 2
          maxItems: 2
          example:
            - 1
            - null
          description: >-
            Anuncios en curso mínimos y máximos, limitados a este país.
            Actualmente solo se completa para anuncios de LinkedIn.
        total_ads:
          type: array
          items:
            type: integer
            nullable: true
          minItems: 2
          maxItems: 2
          example:
            - 10
            - null
          description: Total de anuncios mínimo y máximo, limitado a este país.
        impressions:
          type: array
          items:
            type: integer
            nullable: true
          minItems: 2
          maxItems: 2
          example:
            - 1000
            - null
          description: Impresiones estimadas mínimas y máximas, limitadas a este país.
      required:
        - country
      example:
        country: US
        rank:
          - null
          - 500
      description: >-
        Actividad publicitaria para un país específico. `country` es
        obligatorio, y debe establecerse al menos otro campo (un país por sí
        solo no coincide con nada). Para un total de todos los países, usa en su
        lugar los filtros de nivel superior `advertisement_active_ads` /
        `advertisement_total_ads` / `advertisement_impressions_estimate`.
    advertisement_source_types:
      type: array
      items:
        type: string
        enum:
          - linkedin
          - facebook
          - google
          - tiktok
          - apple
      example:
        - linkedin
        - facebook
      description: >-
        Fuentes a incluir: `linkedin`, `facebook` (se acepta `meta`), `google`,
        `tiktok`, `apple`. Los valores desconocidos no coinciden con nada y se
        reflejan en `metadata.unsupported_source_types`.
    advertisement_exclude_source_types:
      type: array
      items:
        type: string
        enum:
          - linkedin
          - facebook
          - google
          - tiktok
          - apple
      example:
        - apple
      description: >-
        Excluye anuncios capturados de estas fuentes. Mismo vocabulario que
        `source_types` (`linkedin`, `facebook`, `google`, `tiktok`, `apple`;
        `meta` es un alias de `facebook`). Los valores desconocidos se ignoran.
    advertisement_enrichment_mode:
      type: string
      enum:
        - default
        - latest
      default: default
      example: latest
      description: >-
        Controla el comportamiento del enriquecimiento en tiempo real. `default`
        devuelve lo que ya existe en la base de datos, y solo activa el
        enriquecimiento cuando el conjunto de resultados está vacío y
        `is_realtime_enrichment` está establecido. `latest` omite la caché y
        fuerza una nueva pasada de enriquecimiento contra los registros de
        origen más recientes en cada llamada — activa el enriquecimiento por sí
        solo, sin necesitar ningún otro indicador.
    per_page:
      type: integer
      example: 25
      default: 25
      maximum: 25
      description: >-
        Registros por página. Por defecto es 25, que también es el límite en la
        mayoría de los planes — el límite es el `max_search_per_page` de tu
        suscripción, devuelto por
        [Perfil](/es/api-reference/endpoint/profile/profile). Superarlo devuelve
        **HTTP 416** con el código `41676` (o `41613` en la búsqueda de empresas
        y personas), no un conjunto de resultados recortado.
    page:
      type: integer
      example: 1
      default: 1
      description: >-
        Número de página, empezando en 1. El límite es el `max_search_page` de
        tu suscripción (`max_company_search_page` para la búsqueda de empresas),
        devuelto por [Perfil](/es/api-reference/endpoint/profile/profile).
        Superarlo devuelve **HTTP 416**.
    is_ascending_order:
      type: boolean
      default: false
      example: false
      description: >-
        Dirección de ordenación. Los resultados se devuelven por defecto de más
        reciente a más antiguo; establece `true` para el orden inverso (de más
        antiguo a más reciente). No existe `sort_by` en este endpoint: la clave
        de ordenación es fija y se indica en la descripción del endpoint.
    advertisement_publisher_platforms:
      type: array
      items:
        type: string
        enum:
          - facebook
          - instagram
          - messenger
          - threads
          - audience_network
      example:
        - facebook
        - instagram
      description: >-
        Filtra anuncios de Facebook/Meta según la superficie de plataforma en la
        que se entregaron. En minúsculas y sin distinción entre mayúsculas y
        minúsculas. Solo se aplica a la fuente `facebook` (las demás fuentes son
        de plataforma única).
    advertisement_exclude_publisher_platforms:
      type: array
      items:
        type: string
        enum:
          - facebook
          - instagram
          - messenger
          - threads
          - audience_network
      example:
        - audience_network
      description: >-
        Excluye anuncios de Facebook/Meta entregados en estas superficies de
        plataforma.
    advertisement_is_include_unlinked_companies:
      type: boolean
      default: false
      example: true
      description: >-
        Incluye anuncios aún no vinculados a una empresa resuelta (anuncios de
        capa bruta, por ejemplo, anuncios fraudulentos o de páginas
        desechables). Por defecto es false, lo que devuelve únicamente anuncios
        atribuidos a una empresa.
    advertisement_search_metadata:
      allOf:
        - $ref: '#/components/schemas/search_metadata'
        - type: object
          properties:
            applied_source_types:
              type: array
              items:
                type: string
              description: >-
                Solo cuando se envió `source_types`: los valores que se
                reconocieron y aplicaron.
            unsupported_source_types:
              type: array
              items:
                type: string
              description: >-
                Solo cuando `source_types` contenía un valor que no es una
                fuente conocida. Esos valores no coinciden con nada.
            coverage_notes:
              type: array
              items:
                type: object
                properties:
                  source_type:
                    type: string
                  scope:
                    type: string
                    enum:
                      - eea_uk_ch
              description: >-
                Notas de cobertura para las fuentes solicitadas, cuando
                corresponda.
            skipped_source_types:
              type: array
              items:
                type: object
                properties:
                  source_type:
                    type: string
                    description: Fuente que se omitió.
                  reason:
                    type: string
                    enum:
                      - country_unknown_until_enriched
                    description: Motivo por el que no se aplicó la fuente.
              description: >-
                Fuentes que no se aplicaron para los `target_locations`
                solicitados, cada una con un `reason`.
      description: Contexto de la solicitud.
    search_pagination:
      type: object
      description: Paginación del conjunto de resultados.
      properties:
        page:
          type: integer
          description: Número de página actual.
        per_page:
          type: integer
          description: Registros por página.
        total_entries:
          type: integer
          description: >-
            Total de registros coincidentes. En búsquedas amplias e
            independientes de empresa, este valor es una estimación.
        total_pages:
          type: integer
          description: '`total_entries` dividido entre `per_page`.'
        total_display_pages:
          type: integer
          description: >-
            Páginas que realmente puedes solicitar, limitadas por el
            `max_search_page` de tu plan.
        is_timeout:
          type: boolean
          description: >-
            `true` cuando la consulta de conteo excedió el tiempo de espera y
            `total_entries` es una estimación parcial.
    advertisement_search_result:
      type: object
      description: Un anuncio.
      properties:
        advertisement_id:
          type: string
          format: uuid
          description: Identificador del anuncio.
        advertisement_search_id:
          type: string
          format: uuid
          description: Mismo valor que `advertisement_id`. Pásalo a Advertisement Lookup.
        created_at:
          type: string
          format: date-time
          description: >-
            Cuándo Pubrio capturó el anuncio por primera vez. Esta es la clave
            de ordenación predeterminada.
        last_modified:
          type: string
          format: date-time
          description: Cuándo se actualizó el registro por última vez.
        started_at:
          type: string
          format: date-time
          description: >-
            Cuándo empezó a mostrarse el anuncio, según lo informado por la
            fuente.
          nullable: true
        ended_at:
          type: string
          format: date-time
          description: Cuándo dejó de mostrarse el anuncio; `null` mientras sigue activo.
          nullable: true
        title:
          type: string
          description: Titular o título del anuncio.
          nullable: true
        source_type:
          type: string
          enum:
            - linkedin
            - facebook
            - google
            - tiktok
            - apple
          description: >-
            Fuente desde la que se capturó el anuncio. Mismo vocabulario que el
            filtro `source_types`.
        advertisement_format:
          type: string
          description: >-
            Etiqueta de formato exactamente como la publica la fuente, p. ej.
            `Single Image Ad`, `MULTI_IMAGES`.
          nullable: true
        advertisement_format_normalized:
          type: string
          nullable: true
          enum:
            - image
            - video
            - text
            - carousel
            - dynamic_product
            - document
            - message
            - event
            - article
            - spotlight
            - follow
            - job
            - engagement
            - other
          description: >-
            Formato canónico, el vocabulario que acepta el filtro
            `advertisement_formats`. `other` cuando la etiqueta original no está
            asignada.
        is_company_matched:
          type: boolean
          description: >-
            `true` cuando el anuncio está vinculado a un registro de empresa de
            Pubrio. Los anuncios sin vincular solo se devuelven con
            `is_include_unlinked_companies: true`.
        advertiser:
          type: string
          description: Nombre del anunciante tal como lo muestra la fuente.
          nullable: true
        advertiser_url:
          type: string
          description: Página del anunciante en la fuente, cuando está disponible.
          nullable: true
        advertisement_url:
          type: string
          description: >-
            Enlace al anuncio en la biblioteca de anuncios de la fuente, cuando
            está disponible.
          nullable: true
        total_impressions:
          type: string
          description: >-
            Estimación de impresiones exactamente como la publica la fuente, p.
            ej. `< 1k`, `10k-50k`. `null` para las fuentes que no informan
            impresiones.
          nullable: true
        total_impressions_lower:
          type: integer
          nullable: true
          description: Límite inferior del rango de impresiones; `null` para rangos `< N`.
        total_impressions_upper:
          type: integer
          nullable: true
          description: >-
            Límite superior del rango de impresiones; `null` para rangos
            abiertos.
        image_url:
          type: string
          description: Imagen creativa, cuando el anuncio tiene una.
          nullable: true
        video_url:
          type: string
          description: Video creativo, cuando el anuncio tiene uno.
          nullable: true
        carousel_images:
          type: array
          nullable: true
          items:
            type: string
          description: Fotogramas del carrusel, para formatos de carrusel.
        destination_url:
          type: string
          description: >-
            Página de destino resuelta. Los envoltorios de clics de Facebook
            como `fb.me` se desenvuelven a la URL real del embudo.
          nullable: true
        raw_link_url:
          type: string
          description: >-
            El enlace original exactamente como se capturó, antes de
            desenvolverlo.
          nullable: true
        target_country_codes:
          type: array
          nullable: true
          items:
            type: string
          description: >-
            Países en los que se mostró el anuncio (ISO 3166-1 alfa-2). Mismo
            vocabulario que el filtro `target_locations`.
        publisher_platforms:
          type: array
          nullable: true
          items:
            type: string
            enum:
              - facebook
              - instagram
              - messenger
              - threads
              - audience_network
          description: >-
            Superficies de Meta en las que se mostró el anuncio: `facebook`,
            `instagram`, `messenger`, `threads`, `audience_network`. `null` para
            fuentes que no son `facebook`.
        companies:
          $ref: '#/components/schemas/search_result_company'
    search_metadata:
      type: object
      description: Contexto de la solicitud.
      properties:
        profile:
          type: object
          nullable: true
          description: >-
            Bloque de créditos (`credit`, `topup_credit`, `total_credit_cost`)
            cuando se solicita la contabilidad de créditos; `null` en el tráfico
            simple con clave de API.
        filters:
          type: object
          description: >-
            Eco del cuerpo de la solicitud tal como lo aplicó el endpoint,
            incluidos valores predeterminados como `per_page` y `language`.
        ignored_fields:
          type: array
          items:
            type: string
          description: >-
            Claves del cuerpo que el endpoint no reconoció y descartó. Si está
            vacío, significa que se aplicaron todas las claves; un filtro mal
            escrito amplía la búsqueda en lugar de fallar.
    search_result_company:
      type: object
      description: La empresa a la que está vinculado el registro.
      properties:
        domain_search_id:
          type: string
          format: uuid
          description: >-
            Identificador de empresa de Pubrio. Pásalo a `companies` en
            cualquier búsqueda, o a Company Lookup.
        company_name:
          type: string
          description: Nombre de la empresa.
        linkedin_name:
          type: string
          nullable: true
          description: >-
            Slug de empresa de LinkedIn (la parte después de
            `linkedin.com/company/`).
        country_code:
          type: string
          nullable: true
          description: Código ISO 3166-1 alfa-2 de la sede de la empresa.
        company_url:
          type: string
          nullable: true
          description: URL del sitio web de la empresa.
        domain:
          type: string
          description: Dominio de la empresa, normalizado (`stripe.com`).
        logo_url:
          type: string
          nullable: true
          description: URL del logotipo de la empresa.
  responses:
    general_error:
      description: >-
        Solicitud incorrecta. La solicitud estaba mal formada o contenía
        parámetros no válidos. Consulta el código de error y el mensaje para más
        detalles.
      content:
        application/json:
          schema:
            required:
              - code
              - message
              - details
            type: object
            properties:
              code:
                example: 40001
                type: integer
              message:
                example: >-
                  Errors and codes will vary depending on the scenario, please
                  see the documentation for information.
                type: string
              details:
                type: object
    rate_limit_error:
      description: >-
        Límite de tasa excedido. Se realizaron demasiadas solicitudes en un
        período de tiempo determinado. Vuelve a intentarlo después de que se
        restablezca la ventana de límite de tasa.
      content:
        application/json:
          schema:
            required:
              - error
            type: object
            properties:
              error:
                example: Request rate limit exceeded. Please wait and try again later.
                type: string
    server_error:
      description: >-
        Error interno del servidor. Se produjo un error inesperado en el
        servidor. Contacta con soporte si el error persiste.
      content:
        application/json:
          schema:
            required:
              - error
            type: object
            properties:
              error:
                example: An unexpected error occurred on the server.
                type: string
  securitySchemes:
    pubrio_api_key:
      type: apiKey
      name: pubrio-api-key
      description: >-
        Un token de API único que representa las acciones que realizas a través
        de la API, junto con los permisos y operaciones correspondientes. Puedes
        crearlo en la sección
        [Configuración](https://dashboard.pubrio.com/#/settings/).
      in: header

````