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

# G2 Seller

> Read the public G2 seller profile, displayed aggregate rating/review count, company details, and independently paged product cards and review teasers. Products support pages 1–100; public review previews support pages 1–10. Missing fields and exact individual review ratings remain null. This is not full review history or private analytics.

Pass a seller slug such as `hubspot`, or its HTTPS G2 seller URL, in `id`, `url` or `handle`. Multiple supplied identifiers must agree. Each fresh request retrieves one exact public seller page through the existing basic Firecrawl transport.

Company fields include public name, description, headquarters, founding year, ownership and website when displayed. `rating` and `review_count` come from explicit seller-header text, not rounded star graphics. Missing fields remain null; a displayed zero review count remains zero. Website links are returned without visiting the company website.

`products.items` contains the main portfolio's cards, excluding the featured block. Product descriptions are excerpts; displayed review counts are retained and unavailable exact ratings remain null. Use `products_page` 1–100 with `products.next_page`. The full product total is unknown.

`reviews.items` contains cross-product review teasers in the public page's native most-recent order: source ID, title, excerpt, date, displayed reviewer name and product identity. These are not full review bodies. Exact individual review ratings remain null. Use `reviews_page` 1–10 with `reviews.next_page`. Product and review pages are independent and can be supplied together.

`source_has_more` reports whether that list exposes a Next link. `truncated` marks the configured product-page ceiling, or the ten-page review-preview limit when the aggregate count exceeds the visible preview window. The aggregate count does not establish that every review can be retrieved publicly. A seller with zero displayed reviews and an explicit empty-state message returns an empty review array.

The adapter validates source/canonical URL, seller IDs, selected pages, review IDs and both streams' continuation links. Mismatched IDs, unsupported parameters or page ranges return 422. Source failures leave no net SocialQuery charge; cache hits and successful idempotent replays are free.


## OpenAPI

````yaml GET /g2/seller
openapi: 3.1.0
info:
  title: SocialQuery API
  version: '2026-10-09'
  description: >-
    Documented requests for public-source records. Inspect accepted inputs and
    credit amounts, then verify the selected operation before integrating
    preview coverage.
servers:
  - url: https://socialquery.dev/v1
security:
  - apiKey: []
paths:
  /g2/seller:
    get:
      tags:
        - G2
      summary: G2 Seller
      description: >-
        Read the public G2 seller profile, displayed aggregate rating/review
        count, company details, and independently paged product cards and review
        teasers. Products support pages 1–100; public review previews support
        pages 1–10. Missing fields and exact individual review ratings remain
        null. This is not full review history or private analytics.
      operationId: get_g2_seller
      parameters:
        - name: id
          in: query
          required: false
          example: hubspot
          schema:
            type: string
          description: >-
            G2 seller slug or HTTPS seller URL. All supplied identity aliases
            must agree.
        - name: url
          in: query
          required: false
          schema:
            type: string
          description: >-
            G2 seller slug or HTTPS seller URL. All supplied identity aliases
            must agree.
        - name: handle
          in: query
          required: false
          schema:
            type: string
          description: >-
            G2 seller slug or HTTPS seller URL. All supplied identity aliases
            must agree.
        - name: products_page
          in: query
          required: false
          schema:
            type: integer
            minimum: 1
            maximum: 100
          description: Native product page, 1–100; continue with products.next_page.
        - name: reviews_page
          in: query
          required: false
          schema:
            type: integer
            minimum: 1
            maximum: 10
          description: Native review-preview page, 1–10; continue with reviews.next_page.
        - name: Cache-Control
          in: header
          required: false
          example: no-cache
          schema:
            type: string
        - name: Idempotency-Key
          in: header
          required: false
          example: 7a5e1b4c-2d8f-4a3b-9c1e-6e8b4d2a1f3c
          schema:
            type: string
        - name: X-Max-Credits
          in: header
          required: false
          description: >-
            Optional nonnegative integer cap on the maximum request hold. A live
            request whose hold exceeds this cap returns 422
            CREDIT_BUDGET_EXCEEDED before spending. Metered holds use the
            requested limit; cache hits and successful idempotent replays cost
            zero.
          schema:
            type: integer
            minimum: 0
      responses:
        '200':
          description: >-
            Read the public G2 seller profile, displayed aggregate rating/review
            count, company details, and independently paged product cards and
            review teasers. Products support pages 1–100; public review previews
            support pages 1–10. Missing fields and exact individual review
            ratings remain null. This is not full review history or private
            analytics.
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/SocialQueryResponse'
                  - type: object
                    properties:
                      data:
                        type: object
                        properties:
                          id:
                            type: string
                          slug:
                            type: string
                          name:
                            type: string
                          url:
                            type: string
                          description:
                            type:
                              - string
                              - 'null'
                          headquarters:
                            type:
                              - string
                              - 'null'
                          founded_year:
                            type:
                              - integer
                              - 'null'
                            minimum: 0
                          ownership:
                            type:
                              - string
                              - 'null'
                          website:
                            type:
                              - string
                              - 'null'
                          rating:
                            anyOf:
                              - type: object
                                properties:
                                  value:
                                    type: number
                                    minimum: 0
                                    maximum: 5
                                  scale:
                                    const: 5
                                required:
                                  - value
                                  - scale
                              - type: 'null'
                          review_count:
                            type: integer
                            minimum: 0
                          products:
                            type: object
                            properties:
                              items:
                                type: array
                                items:
                                  type: object
                                  properties:
                                    product:
                                      type: object
                                      properties:
                                        id:
                                          type: string
                                        slug:
                                          type: string
                                        name:
                                          type: string
                                        url:
                                          type: string
                                        type:
                                          type:
                                            - string
                                            - 'null'
                                        description:
                                          type:
                                            - string
                                            - 'null'
                                        review_count:
                                          type:
                                            - integer
                                            - 'null'
                                          minimum: 0
                                        rating:
                                          type: 'null'
                                      required:
                                        - id
                                        - slug
                                        - name
                                        - url
                                        - type
                                        - description
                                        - review_count
                                        - rating
                                  required:
                                    - product
                              page:
                                type: integer
                                minimum: 0
                              returned_count:
                                type: integer
                                minimum: 0
                              total:
                                type: 'null'
                              next_page:
                                type:
                                  - integer
                                  - 'null'
                                minimum: 0
                              source_has_more:
                                type: boolean
                              truncated:
                                type: boolean
                            required:
                              - items
                              - page
                              - returned_count
                              - total
                              - next_page
                              - source_has_more
                              - truncated
                          reviews:
                            type: object
                            properties:
                              items:
                                type: array
                                items:
                                  type: object
                                  properties:
                                    id:
                                      type: string
                                    url:
                                      type: string
                                    title:
                                      type: string
                                    excerpt:
                                      type: string
                                    date:
                                      type: string
                                      format: date
                                    reviewer_name:
                                      type: string
                                    rating:
                                      type: 'null'
                                    product:
                                      type: object
                                      properties:
                                        id:
                                          type: string
                                        slug:
                                          type: string
                                        name:
                                          type: string
                                        url:
                                          type: string
                                      required:
                                        - id
                                        - slug
                                        - name
                                        - url
                                  required:
                                    - id
                                    - url
                                    - title
                                    - excerpt
                                    - date
                                    - reviewer_name
                                    - rating
                                    - product
                              page:
                                type: integer
                                minimum: 0
                              returned_count:
                                type: integer
                                minimum: 0
                              next_page:
                                type:
                                  - integer
                                  - 'null'
                                minimum: 0
                              source_has_more:
                                type: boolean
                              truncated:
                                type: boolean
                            required:
                              - items
                              - page
                              - returned_count
                              - next_page
                              - source_has_more
                              - truncated
                          source:
                            type: string
                          coverage_note:
                            type: string
                        required:
                          - id
                          - slug
                          - name
                          - url
                          - description
                          - headquarters
                          - founded_year
                          - ownership
                          - website
                          - rating
                          - review_count
                          - products
                          - reviews
                          - source
                          - coverage_note
        '400':
          $ref: '#/components/responses/Error400'
        '401':
          $ref: '#/components/responses/Error401'
        '402':
          $ref: '#/components/responses/Error402'
        '403':
          $ref: '#/components/responses/Error403'
        '404':
          $ref: '#/components/responses/Error404'
        '405':
          $ref: '#/components/responses/Error405'
        '409':
          $ref: '#/components/responses/Error409'
        '422':
          $ref: '#/components/responses/Error422'
        '429':
          $ref: '#/components/responses/Error429'
        '500':
          $ref: '#/components/responses/Error500'
        '502':
          $ref: '#/components/responses/Error502'
        '503':
          $ref: '#/components/responses/Error503'
        '504':
          $ref: '#/components/responses/Error504'
components:
  schemas:
    SocialQueryResponse:
      type: object
      required:
        - success
        - platform
        - endpoint
        - credits_used
        - credits_remaining
        - request_id
        - cached
        - data
      properties:
        success:
          type: boolean
          const: true
        platform:
          type: string
        endpoint:
          type: string
        credits_used:
          type: integer
          minimum: 0
        credits_remaining:
          type:
            - integer
            - 'null'
        request_id:
          type: string
        cached:
          type: boolean
        data:
          type: object
          additionalProperties: true
          description: >-
            The selected operation determines the resource fields in this
            object. Source data can omit a metric or report it as null.
    SocialQueryError:
      type: object
      required:
        - success
        - platform
        - endpoint
        - credits_used
        - credits_remaining
        - request_id
        - cached
        - error
      properties:
        success:
          type: boolean
          const: false
        platform:
          type: string
        endpoint:
          type: string
        credits_used:
          type: integer
          minimum: 0
        credits_remaining:
          type:
            - integer
            - 'null'
        request_id:
          type: string
        cached:
          type: boolean
        error:
          type: object
          required:
            - code
            - type
            - message
            - status
            - doc_url
          properties:
            code:
              type: string
            type:
              type: string
            message:
              type: string
            status:
              type: integer
            doc_url:
              type: string
              format: uri
  responses:
    Error400:
      description: Upstream rejected the request.
      headers:
        X-Request-Id:
          schema:
            type: string
        X-Credits-Used:
          schema:
            type: integer
        X-Credits-Remaining:
          schema:
            type: string
        X-Cache:
          schema:
            type: string
            enum:
              - HIT
              - MISS
              - BYPASS
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/SocialQueryError'
    Error401:
      description: Missing, expired, invalid, or revoked API key.
      headers:
        X-Request-Id:
          schema:
            type: string
        X-Credits-Used:
          schema:
            type: integer
        X-Credits-Remaining:
          schema:
            type: string
        X-Cache:
          schema:
            type: string
            enum:
              - HIT
              - MISS
              - BYPASS
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/SocialQueryError'
    Error402:
      description: Insufficient SocialQuery credits.
      headers:
        X-Request-Id:
          schema:
            type: string
        X-Credits-Used:
          schema:
            type: integer
        X-Credits-Remaining:
          schema:
            type: string
        X-Cache:
          schema:
            type: string
            enum:
              - HIT
              - MISS
              - BYPASS
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/SocialQueryError'
    Error403:
      description: Key scope or provider policy denied access.
      headers:
        X-Request-Id:
          schema:
            type: string
        X-Credits-Used:
          schema:
            type: integer
        X-Credits-Remaining:
          schema:
            type: string
        X-Cache:
          schema:
            type: string
            enum:
              - HIT
              - MISS
              - BYPASS
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/SocialQueryError'
    Error404:
      description: Endpoint or upstream resource not found.
      headers:
        X-Request-Id:
          schema:
            type: string
        X-Credits-Used:
          schema:
            type: integer
        X-Credits-Remaining:
          schema:
            type: string
        X-Cache:
          schema:
            type: string
            enum:
              - HIT
              - MISS
              - BYPASS
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/SocialQueryError'
    Error405:
      description: HTTP method is not supported.
      headers:
        X-Request-Id:
          schema:
            type: string
        X-Credits-Used:
          schema:
            type: integer
        X-Credits-Remaining:
          schema:
            type: string
        X-Cache:
          schema:
            type: string
            enum:
              - HIT
              - MISS
              - BYPASS
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/SocialQueryError'
    Error409:
      description: Idempotency conflict or request in progress.
      headers:
        X-Request-Id:
          schema:
            type: string
        X-Credits-Used:
          schema:
            type: integer
        X-Credits-Remaining:
          schema:
            type: string
        X-Cache:
          schema:
            type: string
            enum:
              - HIT
              - MISS
              - BYPASS
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/SocialQueryError'
    Error422:
      description: Invalid parameters.
      headers:
        X-Request-Id:
          schema:
            type: string
        X-Credits-Used:
          schema:
            type: integer
        X-Credits-Remaining:
          schema:
            type: string
        X-Cache:
          schema:
            type: string
            enum:
              - HIT
              - MISS
              - BYPASS
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/SocialQueryError'
    Error429:
      description: Request limit reached.
      headers:
        X-Request-Id:
          schema:
            type: string
        X-Credits-Used:
          schema:
            type: integer
        X-Credits-Remaining:
          schema:
            type: string
        X-Cache:
          schema:
            type: string
            enum:
              - HIT
              - MISS
              - BYPASS
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/SocialQueryError'
    Error500:
      description: Request processing failed.
      headers:
        X-Request-Id:
          schema:
            type: string
        X-Credits-Used:
          schema:
            type: integer
        X-Credits-Remaining:
          schema:
            type: string
        X-Cache:
          schema:
            type: string
            enum:
              - HIT
              - MISS
              - BYPASS
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/SocialQueryError'
    Error502:
      description: Upstream service failed.
      headers:
        X-Request-Id:
          schema:
            type: string
        X-Credits-Used:
          schema:
            type: integer
        X-Credits-Remaining:
          schema:
            type: string
        X-Cache:
          schema:
            type: string
            enum:
              - HIT
              - MISS
              - BYPASS
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/SocialQueryError'
    Error503:
      description: Provider or required service is unavailable.
      headers:
        X-Request-Id:
          schema:
            type: string
        X-Credits-Used:
          schema:
            type: integer
        X-Credits-Remaining:
          schema:
            type: string
        X-Cache:
          schema:
            type: string
            enum:
              - HIT
              - MISS
              - BYPASS
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/SocialQueryError'
    Error504:
      description: Upstream service timed out.
      headers:
        X-Request-Id:
          schema:
            type: string
        X-Credits-Used:
          schema:
            type: integer
        X-Credits-Remaining:
          schema:
            type: string
        X-Cache:
          schema:
            type: string
            enum:
              - HIT
              - MISS
              - BYPASS
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/SocialQueryError'
  securitySchemes:
    apiKey:
      type: apiKey
      in: header
      name: x-api-key

````

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