> ## 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 Product

> Read one public G2 software product page, corroborating product identity and structured ratings. Returns source description, categories, seller and listed offer amounts. Billing intervals are unknown, and offer amounts are not checkout quotes. Website contact crawling, private analytics and full feature inventories are unavailable.

Pass a G2 product `id` such as `postman`, or its public product `url`. If both are supplied they must identify the same product. A source response must match the canonical product URL, heading, seller metadata and structured product ratings.

`product` contains the source numeric ID, slug, name, description when available, category labels, operating system, aggregate rating and review count, and seller identity. These are public page fields. If the source publishes no aggregate rating, `rating` is null; no zero review count is invented. The description is a source-published claim. A review count does not mean the endpoint retrieved all written reviews.

`listed_offers` preserves the names, amounts and currencies published in G2's structured metadata. Billing intervals are unavailable and remain null; these amounts are not checkout quotes. No paid vendor destination or advertiser redirect is followed.

`website_contacts_crawl_mode` supports `off` only. Homepage and deep contact crawling return 422 without a net charge. `website_contacts` is null. Private analytics, buyer intent and a complete feature inventory are not included.

The adapter uses one fresh basic Firecrawl fetch of the exact public G2 page. Redirected, failed or inconsistent pages are rejected rather than treated as empty successes. A successful fresh request uses the documented SocialQuery price; cached responses and successful idempotent replays are free.


## OpenAPI

````yaml GET /g2/product
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/product:
    get:
      tags:
        - G2
      summary: G2 Product
      description: >-
        Read one public G2 software product page, corroborating product identity
        and structured ratings. Returns source description, categories, seller
        and listed offer amounts. Billing intervals are unknown, and offer
        amounts are not checkout quotes. Website contact crawling, private
        analytics and full feature inventories are unavailable.
      operationId: get_g2_product
      parameters:
        - name: id
          in: query
          required: false
          example: postman
          schema:
            type: string
        - name: url
          in: query
          required: false
          schema:
            type: string
        - name: website_contacts_crawl_mode
          in: query
          required: false
          schema:
            type: string
            enum:
              - 'off'
            default: 'off'
          description: >-
            Only off is supported by this source. Homepage and deep contact
            crawls return 422 without a net credit charge.
        - 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 one public G2 software product page, corroborating product
            identity and structured ratings. Returns source description,
            categories, seller and listed offer amounts. Billing intervals are
            unknown, and offer amounts are not checkout quotes. Website contact
            crawling, private analytics and full feature inventories are
            unavailable.
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/SocialQueryResponse'
                  - type: object
                    properties:
                      data:
                        type: object
                        properties:
                          product:
                            type: object
                            properties:
                              id:
                                type: string
                              slug:
                                type: string
                              name:
                                type: string
                              url:
                                type: string
                              description:
                                type:
                                  - string
                                  - 'null'
                              categories:
                                type: array
                                items:
                                  type: string
                              operating_system:
                                type:
                                  - string
                                  - 'null'
                              rating:
                                type:
                                  - object
                                  - 'null'
                                properties:
                                  value:
                                    type: number
                                    minimum: 0
                                    maximum: 5
                                  review_count:
                                    type: integer
                                    minimum: 0
                                  best:
                                    type: integer
                                    const: 5
                                  worst:
                                    type:
                                      - number
                                      - 'null'
                                required:
                                  - value
                                  - review_count
                                  - best
                                  - worst
                              seller:
                                type: object
                                properties:
                                  id:
                                    type: string
                                  name:
                                    type: string
                                  url:
                                    type: string
                                required:
                                  - id
                                  - name
                                  - url
                              listed_offers:
                                type: array
                                items:
                                  type: object
                                  properties:
                                    name:
                                      type: string
                                    amount:
                                      type: number
                                      minimum: 0
                                    currency:
                                      type: string
                                    billing_interval:
                                      type: 'null'
                                  required:
                                    - name
                                    - amount
                                    - currency
                                    - billing_interval
                              website_contacts:
                                type: 'null'
                            required:
                              - id
                              - slug
                              - name
                              - url
                              - description
                              - categories
                              - operating_system
                              - rating
                              - seller
                              - listed_offers
                              - website_contacts
                          source:
                            type: string
                          coverage_note:
                            type: string
                        required:
                          - product
                          - 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.