---
openapi: 3.0.1
info:
title: G2 API
version: v2
description: |
## Rate Limiting
Cloudflare limits requests to the G2 API to **100 requests per second** per source IP address.
paths:
"/api/sandbox/products/{subject_product_id}/buyer_intent":
get:
summary: Browse sandbox buyer intent interactions for a product
operationId: getSandboxBuyerIntentInteractions
tags:
- Buyer Intent
description: |
**No scope is required to access this sandbox endpoint**
**⚠️ Sandbox API**: This endpoint is a sandbox endpoint and is data limited. Only data between 6 months to 1 year ago will be available.
Query buyer intent data using an analytical query interface.
## Query Language
This endpoint uses an OLAP-style query language that supports:
- **Dimensions**: Group and categorize data (e.g., company_name, company_domain, day)
- **Measures**: Aggregate numerical values (e.g., total_activity, visitor_count)
- **Filters**: Apply conditions to limit results
### Filter Operators
Filters use the format `dimension_filters[name_suffix]` where `name`
is the dimension name and `suffix` indicates the operation:
- `_eq`: Equals (exact match)
- `_not_eq`: Not equals
- `_cont`: Contains (substring match)
- `_not_cont`: Does not contain
- `_gt`: Greater than
- `_gteq`: Greater than or equal
- `_lt`: Less than
- `_lteq`: Less than or equal
- `_present`: Field has a value
- `_empty`: Field is empty
### Time Series vs Aggregated Data
- **Aggregated**: Request dimensions without `day` for company-level summaries
- **Time Series**: Include `day` dimension for daily breakdowns over time
### Sorting Results
Use the `sort` parameter to order results by any dimension or measure:
- **Ascending**: `sort=company_name` or `sort=total_activity`
- **Descending**: `sort=-company_intent_score` (prefix with `-`)
- **Default**: Results are sorted by `-company_intent_score` (highest intent first)
Available sort fields include all dimensions and measures listed above.
### Examples
- Company summary: `dimensions=company_name,company_domain&measures=total_activity`
- Time series: `dimensions=company_name,day&measures=company_intent_score`
- Filtered: `dimension_filters[company_name_cont]=Acme&dimensions=company_name`
- Sorted by activity: `dimensions=company_name&measures=total_activity&sort=-total_activity`
security:
- AccountAPIToken: []
G2OAuth:
- openid
- profile
parameters:
- name: subject_product_id
in: path
description: Identifier for the subject product
required: true
schema:
type: string
- name: dimensions
in: query
explode: false
description: Comma separated list of dimensions
schema:
type: array
items:
type: string
enum:
- signal_type
- time
- day
- week
- month
- company_id
- company_name
- company_domain
- company_country
- company_state
- company_city
- company_employees
- company_industry
- visitor_id
- visitor_country
- visitor_state
- visitor_city
- company_intent_score
- product_id
- product_slug
- product_name
- category_id
- category_slug
- category_name
- left_product_id
- left_product_slug
- left_product_name
- right_product_id
- right_product_slug
- right_product_name
- vendor_id
- vendor_slug
- vendor_name
- provider
- name: measures
in: query
explode: false
description: Comma separated list of measures
schema:
type: array
items:
type: string
enum:
- total_activity
- visitor_count
- company_count
- last_seen_at
- name: sort
in: query
description: Sort field with optional direction prefix. Use "-" for descending
(e.g., "-day")
schema:
type: string
- name: page[size]
in: query
required: false
description: 'Number of records per page (default: 25, max: 250)'
schema:
type: integer
minimum: 1
maximum: 250
default: 25
- name: page[after]
in: query
required: false
description: Cursor for fetching the next page of results
schema:
type: string
- name: page[before]
in: query
required: false
description: Cursor for fetching the previous page of results
schema:
type: string
- name: dimension_filters
in: query
style: deepObject
explode: true
description: Filters represented as query object (e.g., dimension_filters[company_name_cont]=Acme)
schema:
type: object
additionalProperties:
oneOf:
- type: string
- type: number
- type: string
format: date-time
example:
company_name_cont: Acme
company_intent_score_gteq: 75
day_gteq: '2024-01-01'
responses:
'200':
description: Successful responses
content:
application/vnd.api+json:
examples:
Company-level intent score:
value:
data:
- id: 602674427a5e0384ac2b5a911062a284
type: buyer_intent
attributes:
total_activity: 150
company_name: Enterprise Corp
company_domain: enterprise.com
company_state: New York
company_intent_score: 85.5
subject_product_id: f6d9f6d6-3ec1-4380-8525-000000000002
subject_product_slug: test-product-6
links:
self: http://data.example.com/api/sandbox/products/f6d9f6d6-3ec1-4380-8525-000000000002/buyer_intent?dimensions=company_name,company_domain,company_state,company_intent_score&measures=total_activity&sort=-company_intent_score&dimension_filters%5Bcompany_intent_score_gteq%5D=75
next:
prev:
Company-level intent score by day:
value:
data:
- id: a6b2c88e1321dbb7b45d8575d0fea75b
type: buyer_intent
attributes:
total_activity: 25
day: '2024-01-15'
company_intent_score: 75.0
subject_product_id: f6d9f6d6-3ec1-4380-8525-000000000002
subject_product_slug: test-product-7
- id: 610adfa9282f00fd355147a410aaa154
type: buyer_intent
attributes:
total_activity: 35
day: '2024-01-16'
company_intent_score: 82.5
subject_product_id: f6d9f6d6-3ec1-4380-8525-000000000002
subject_product_slug: test-product-7
links:
self: http://data.example.com/api/sandbox/products/f6d9f6d6-3ec1-4380-8525-000000000002/buyer_intent?dimensions=company_intent_score,day&measures=total_activity&sort=-company_intent_score&dimension_filters%5Bcompany_id_eq%5D=uuid-456&dimension_filters%5Bday_gteq%5D=2024-01-01
next:
prev:
Company-level activity by signal type:
value:
data:
- id: 5bd5e51817ee7d50eded19d61a0e5d10
type: buyer_intent
attributes:
total_activity: 10
signal_type: profile
company_name: Enterprise Corp
company_domain: enterprise.com
company_state: New York
subject_product_id: f6d9f6d6-3ec1-4380-8525-000000000002
subject_product_slug: test-product-8
- id: 6f864c4b6221d1241cab0bc3295c8fbb
type: buyer_intent
attributes:
total_activity: 5
signal_type: pricing
company_name: Enterprise Corp
company_domain: enterprise.com
company_state: New York
subject_product_id: f6d9f6d6-3ec1-4380-8525-000000000002
subject_product_slug: test-product-8
links:
self: http://data.example.com/api/sandbox/products/f6d9f6d6-3ec1-4380-8525-000000000002/buyer_intent?dimensions=company_name,company_domain,company_state,signal_type&measures=total_activity&sort=-company_intent_score&
next:
prev:
Visitor-level daily behavior:
value:
data:
- id: 1e4bd6a7464c9637a09a7836daa6a6a3
type: buyer_intent
attributes:
total_activity: 5
signal_type: pricing
day: '2024-01-15'
company_name: Tech Solutions Inc
company_domain: techsolutions.com
visitor_id: visitor-123
visitor_country: United States
visitor_state:
subject_product_id: f6d9f6d6-3ec1-4380-8525-000000000002
subject_product_slug: test-product-9
links:
self: http://data.example.com/api/sandbox/products/f6d9f6d6-3ec1-4380-8525-000000000002/buyer_intent?dimensions=visitor_id,visitor_country,visitor_state,company_name,company_domain,signal_type,day&measures=total_activity&sort=-company_intent_score&dimension_filters%5Bday_gteq%5D=2024-01-01
next:
prev:
Summary of data volume:
value:
data:
- id: 53617a1aa24939effc7778828ba770d2
type: buyer_intent
attributes:
total_activity: 1250
visitor_count: 450
company_count: 150
subject_product_id: f6d9f6d6-3ec1-4380-8525-000000000002
subject_product_slug: test-product-10
links:
self: http://data.example.com/api/sandbox/products/f6d9f6d6-3ec1-4380-8525-000000000002/buyer_intent?dimensions=&measures=company_count,visitor_count,total_activity&sort=-company_intent_score&
next:
prev:
Data volume by topic (Product and Category):
value:
data:
- id: f03aa0a9a87e5c684a685b314be1c068
type: buyer_intent
attributes:
total_activity: 30
visitor_count: 20
company_count: 10
product_slug: acme-product
category_slug: acme-category
subject_product_id: f6d9f6d6-3ec1-4380-8525-000000000002
subject_product_slug: test-product-11
links:
self: http://data.example.com/api/sandbox/products/f6d9f6d6-3ec1-4380-8525-000000000002/buyer_intent?dimensions=product_slug,category_slug&measures=company_count,visitor_count,total_activity&sort=-company_intent_score&dimension_filters%5Bcompany_intent_score_gteq%5D=50
next:
prev:
schema:
type: object
required:
- data
- links
properties:
data:
type: array
items:
type: object
properties:
id:
type: string
type:
type: string
attributes:
type: object
properties:
company_id:
type: string
description: Unique company identifier
company_name:
type: string
description: Company name
company_domain:
type: string
description: Company website domain
company_state:
type: string
description: Company location state
visitor_id:
type: string
description: Unique visitor identifier
company_intent_score:
type: number
description: Intent score (0-100)
total_activity:
type: integer
description: Total page views and interactions
day:
type: string
format: date
description: Date for time-series data
product_id:
type: string
nullable: true
description: Product UUID
category_id:
type: string
nullable: true
description: Category UUID
subject_product_id:
type: string
description: Subject product UUID
subject_product_slug:
type: string
description: Subject product slug
required:
- id
- type
- attributes
included:
"$ref": "#/components/schemas/included"
links:
"$ref": "#/components/schemas/cursor_pagination"
"/api/v2/screenshots":
get:
summary: Lists screenshots
operationId: getScreenshots
tags:
- Screenshots
description: "**Requires `screenshots.read` scope.**\n"
security:
- AccountAPIToken: []
G2OAuth:
- openid
- profile
parameters:
- name: page[size]
in: query
required: false
description: 'Number of records per page (default: 25, max: 250)'
schema:
type: integer
minimum: 1
maximum: 250
default: 25
- name: page[after]
in: query
required: false
description: Cursor for fetching the next page of results
schema:
type: string
- name: page[before]
in: query
required: false
description: Cursor for fetching the previous page of results
schema:
type: string
- name: filter[created_at_gt]
in: query
schema:
type: string
description: Min time for when a record was created. Using rfc3339 format.
- name: filter[created_at_lt]
in: query
schema:
type: string
description: Max time for when a record was last updated. Using rfc3339 format.
- name: filter[updated_at_gt]
in: query
schema:
type: string
description: Min time for when a record was last updated. Using rfc3339 format.
- name: filter[updated_at_lt]
in: query
schema:
type: string
description: Max time for when a record was last updated. Using rfc3339 format.
- name: fields[screenshots]
in: query
explode: false
description: Comma separated list of fields for screenshots to include in
response
schema:
type: array
items:
type: string
enum:
- id
- product_id
- url
- created_at
- updated_at
- file_name
- title
- description
- name: include
in: query
explode: false
description: Comma-separated list of relationships to include (e.g. product,vendor)
schema:
type: array
items:
type: string
enum:
- product
- vendor
responses:
'400':
description: with invalid request parameters
content:
application/vnd.api+json:
example:
errors:
- status: '400'
title: 'Invalid parameter: "include" contains unknown
items: "foo"'
schema:
"$ref": "#/components/schemas/Errors"
'401':
description: Unauthenticated
content:
application/vnd.api+json:
example:
errors:
- status: '401'
title: Bad Credentials
schema:
"$ref": "#/components/schemas/Errors"
'200':
description: With all fields included
content:
application/vnd.api+json:
example:
data:
- id: 1dadd35b-0e33-46db-8377-000000000002
type: screenshots
attributes:
product_id: 1dadd35b-0e33-46db-8377-000000000001
url: https://d3cat1s0n6zlx1.cloudfront.net/uploads/attachment/file/47/g2.png
created_at: '2021-12-01T00:00:00.000-06:00'
updated_at: '2022-01-01T00:00:00.000-06:00'
file_name: g2.png
title: G2.com
description:
links:
self: http://data.example.com/api/v2/screenshots?filter%5Bcreated_at_gt%5D=&filter%5Bcreated_at_lt%5D=&filter%5Bupdated_at_gt%5D=&filter%5Bupdated_at_lt%5D=&fields%5Bscreenshots%5D=id,product_id,url,created_at,updated_at,file_name,title,description&include=product,vendor
next:
prev:
meta:
record_count: 1
schema:
type: object
required:
- data
- links
properties:
data:
type: array
items:
type: object
properties:
id:
type: string
type:
type: string
attributes:
type: object
required:
- created_at
- product_id
- url
properties:
id:
type: string
product_id:
type: string
url:
type: string
created_at:
type: string
format: date-time
updated_at:
type: string
format: date-time
file_name:
type: string
title:
type: string
description:
type: string
nullable: true
required:
- id
- type
- attributes
included:
"$ref": "#/components/schemas/included"
links:
"$ref": "#/components/schemas/cursor_pagination"
"/api/v2/screenshots/{id}":
get:
summary: Shows a screenshot
operationId: getScreenshot
tags:
- Screenshots
description: "**Requires `screenshots.read` scope.**\n"
security:
- AccountAPIToken: []
G2OAuth:
- openid
- profile
parameters:
- name: id
in: path
required: true
schema:
type: string
- name: fields[screenshots]
in: query
explode: false
description: Comma separated list of fields for screenshots to include in
response
schema:
type: array
items:
type: string
enum:
- id
- product_id
- url
- created_at
- updated_at
- file_name
- title
- description
- name: include
in: query
explode: false
description: Comma-separated list of relationships to include (e.g. product,vendor)
schema:
type: array
items:
type: string
enum:
- product
- vendor
responses:
'400':
description: with invalid request parameters
content:
application/vnd.api+json:
example:
errors:
- status: '400'
title: 'Invalid parameter: "include" contains unknown
items: "foo"'
schema:
"$ref": "#/components/schemas/Errors"
'401':
description: Unauthenticated
content:
application/vnd.api+json:
example:
errors:
- status: '401'
title: Bad Credentials
schema:
"$ref": "#/components/schemas/Errors"
'404':
description: With invalid id
content:
application/vnd.api+json:
example:
errors:
- status: '404'
title: Not Found
schema:
"$ref": "#/components/schemas/Errors"
'200':
description: With all fields included
content:
application/vnd.api+json:
example:
data:
id: 1dadd35b-0e33-46db-8377-000000000002
type: screenshots
attributes:
product_id: 1dadd35b-0e33-46db-8377-000000000001
url: https://d3cat1s0n6zlx1.cloudfront.net/uploads/attachment/file/52/g2.png
created_at: '2021-12-01T00:00:00.000-06:00'
updated_at: '2022-01-01T00:00:00.000-06:00'
file_name: g2.png
title: G2.com
description:
schema:
type: object
required:
- data
properties:
data:
type: object
properties:
id:
type: string
type:
type: string
attributes:
type: object
required:
- created_at
- url
properties:
id:
type: string
product_id:
type: string
url:
type: string
created_at:
type: string
format: date-time
updated_at:
type: string
format: date-time
file_name:
type: string
title:
type: string
description:
type: string
nullable: true
included:
"$ref": "#/components/schemas/included"
"/api/v2/buyer_intent":
get:
summary: Browse buyer intent interactions (product-agnostic)
operationId: getGlobalBuyerIntentInteractions
tags:
- Buyer Intent
description: |
**Requires `buyer_intent.read` scope.**
Query buyer intent data across one or more products in a single request.
Pass product_id to specify which products, or omit to use your assigned products.
Supports multi-product queries — the data is not scoped to a single subject product.
security:
- AccountAPIToken: []
G2OAuth:
- openid
- profile
parameters:
- name: dimensions
in: query
explode: false
description: Comma separated list of dimensions
schema:
type: array
items:
type: string
enum:
- signal_type
- time
- day
- week
- month
- company_id
- company_name
- company_domain
- company_country
- company_state
- company_city
- company_employees
- company_industry
- visitor_id
- visitor_country
- visitor_state
- visitor_city
- product_id
- product_slug
- product_name
- category_id
- category_slug
- category_name
- left_product_id
- left_product_slug
- left_product_name
- right_product_id
- right_product_slug
- right_product_name
- vendor_id
- vendor_slug
- vendor_name
- provider
- name: measures
in: query
explode: false
description: Comma separated list of measures
schema:
type: array
items:
type: string
enum:
- total_activity
- visitor_count
- company_count
- last_seen_at
- name: subject_product_ids
in: query
description: One or more product IDs, UUIDs, or URL slugs (comma-separated)
that scope the permissions of this query. Defaults to your assigned products.
schema:
type: string
- name: sort
in: query
description: Sort field with optional direction prefix. Use "-" for descending
(e.g., "-day")
schema:
type: string
- name: page[size]
in: query
required: false
description: 'Number of records per page (default: 25, max: 250)'
schema:
type: integer
minimum: 1
maximum: 250
default: 25
- name: page[after]
in: query
required: false
description: Cursor for fetching the next page of results
schema:
type: string
- name: page[before]
in: query
required: false
description: Cursor for fetching the previous page of results
schema:
type: string
- name: dimension_filters
in: query
style: deepObject
explode: true
description: Filters represented as query object (e.g., dimension_filters[company_name_cont]=Acme)
schema:
type: object
additionalProperties:
oneOf:
- type: string
- type: number
- type: string
format: date-time
example:
company_name_cont: Acme
provider_in: g2
audience_product_id_in: "<product-uuid-or-slug>"
responses:
'200':
description: Successful responses
content:
application/vnd.api+json:
examples:
Company-level activity:
value:
data:
- id: 4e461029a40e1748cb562a87a581125d
type: buyer_intent
attributes:
total_activity: 150
company_name: Enterprise Corp
company_domain: enterprise.com
links:
self: http://data.example.com/api/v2/buyer_intent?dimensions=company_name,company_domain&measures=total_activity&subject_product_ids=4d4226d5-4959-4648-8fd2-000000000001&sort=&
next:
prev:
With provider dimension:
value:
data:
- id: c72be8462054890d1a74760c5919cfe2
type: buyer_intent
attributes:
total_activity: 80
company_name: Enterprise Corp
provider: g2
- id: 57a93f21a6b22c62794813e31c9aabf5
type: buyer_intent
attributes:
total_activity: 70
company_name: Enterprise Corp
provider: capterra
links:
self: http://data.example.com/api/v2/buyer_intent?dimensions=company_name,provider&measures=total_activity&subject_product_ids=4d4226d5-4959-4648-8fd2-000000000001&sort=&
next:
prev:
Summary of data volume:
value:
data:
- id: 075541525d161a64bcfeaf1315997704
type: buyer_intent
attributes:
total_activity: 1250
visitor_count: 450
company_count: 150
links:
self: http://data.example.com/api/v2/buyer_intent?dimensions=&measures=company_count,visitor_count,total_activity&subject_product_ids=4d4226d5-4959-4648-8fd2-000000000001&sort=&
next:
prev:
schema:
type: object
required:
- data
- links
properties:
data:
type: array
items:
type: object
properties:
id:
type: string
type:
type: string
attributes:
type: object
properties:
company_id:
type: string
description: Unique company identifier
company_name:
type: string
description: Company name
company_domain:
type: string
description: Company website domain
total_activity:
# --- truncated at 32 KB (464 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/business-software-and-services-reviews-g2/refs/heads/main/openapi/business-software-and-services-reviews-g2-v2-openapi.yml