openapi: 3.2.0 info: title: G2 Buyer Intent API version: v2 description: '## Rate Limiting Cloudflare limits requests to the G2 API to **100 requests per second** per source IP address.' servers: - url: https://{defaultHost} variables: defaultHost: default: data.g2.com tags: - name: Buyer Intent 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: null prev: null 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: null prev: null 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: null prev: null 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: null 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: null prev: null 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: null prev: null 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: null prev: null 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 - 'null' description: Product UUID category_id: type: - string - 'null' 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/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: 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: null prev: null 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: null prev: null 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: null prev: null 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: type: integer description: Total page views and interactions provider: type: string description: Data provider (g2, capterra) required: - id - type - attributes included: $ref: '#/components/schemas/included' links: $ref: '#/components/schemas/cursor_pagination' /api/v2/products/{subject_product_id}/buyer_intent: get: summary: Browse buyer intent interactions for a product operationId: getBuyerIntentInteractions tags: - Buyer Intent description: '**Requires `buyer_intent.read` scope.** 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. ### Signal Types The `signal_type` dimension identifies the type of buyer activity on G2 (e.g., `profile`, `pricing`, `compare`). ### Competitive Signals Results include activity on both your product and competitor products in your categories. Compare `left_product_id` to `subject_product_id` to distinguish the two: - **`left_product_id` = `subject_product_id`**: Direct signal — activity on your product. - **`left_product_id` ≠ `subject_product_id`**: Competitive signal — activity on a competitor. The `signal_type` indicates what the buyer did (e.g., viewed the competitor''s `profile` or `pricing` page). Use `left_product_name` / `left_product_slug` to identify the competitor. ### 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` - Competitive activity: `dimensions=company_name,signal_type,left_product_name,left_product_id&measures=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' audience_product_id_in: responses: '200': description: Successful responses content: application/vnd.api+json: examples: Company-level intent score: value: data: - id: fe93583b661debe2c6d59cf79ed5a3d7 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: 6406acf7-d22b-49b0-8e37-000000000001 subject_product_slug: test-product-57 links: self: http://data.example.com/api/v2/products/6406acf7-d22b-49b0-8e37-000000000001/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: null prev: null Company-level intent score by day: value: data: - id: 6f6571010ddd1219a4625303eb083648 type: buyer_intent attributes: total_activity: 25 day: '2024-01-15' company_intent_score: 75.0 subject_product_id: 6406acf7-d22b-49b0-8e37-000000000001 subject_product_slug: test-product-58 - id: dea18240e1eef07ab1c1cee6051a5653 type: buyer_intent attributes: total_activity: 35 day: '2024-01-16' company_intent_score: 82.5 subject_product_id: 6406acf7-d22b-49b0-8e37-000000000001 subject_product_slug: test-product-58 links: self: http://data.example.com/api/v2/products/6406acf7-d22b-49b0-8e37-000000000001/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: null prev: null Company-level activity by signal type: value: data: - id: 7bd821df038477d6fb5b980147b5463c 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: 6406acf7-d22b-49b0-8e37-000000000001 subject_product_slug: test-product-59 - id: 37a20e1efd6069bb1b8be3af6481e99b 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: 6406acf7-d22b-49b0-8e37-000000000001 subject_product_slug: test-product-59 links: self: http://data.example.com/api/v2/products/6406acf7-d22b-49b0-8e37-000000000001/buyer_intent?dimensions=company_name,company_domain,company_state,signal_type&measures=total_activity&sort=-company_intent_score& next: null prev: null Visitor-level daily behavior: value: data: - id: c3a0c10ed52c194a3e69fe98577157b6 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: null subject_product_id: 6406acf7-d22b-49b0-8e37-000000000001 subject_product_slug: test-product-60 links: self: http://data.example.com/api/v2/products/6406acf7-d22b-49b0-8e37-000000000001/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: null prev: null Summary of data volume: value: data: - id: 9c5a494edd3e7ff790c436372c2f6d14 type: buyer_intent attributes: total_activity: 1250 visitor_count: 450 company_count: 150 subject_product_id: 6406acf7-d22b-49b0-8e37-000000000001 subject_product_slug: test-product-61 links: self: http://data.example.com/api/v2/products/6406acf7-d22b-49b0-8e37-000000000001/buyer_intent?dimensions=&measures=company_count,visitor_count,total_activity&sort=-company_intent_score& next: null prev: null Data volume by topic (Product and Category): value: data: - id: d89c3f7aa0632eabd0bc738b995f46e7 type: buyer_intent attributes: total_activity: 30 visitor_count: 20 company_count: 10 product_slug: acme-product category_slug: acme-category subject_product_id: 6406acf7-d22b-49b0-8e37-000000000001 subject_product_slug: test-product-62 links: self: http://data.example.com/api/v2/products/6406acf7-d22b-49b0-8e37-000000000001/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: null prev: null 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 - 'null' description: Product UUID category_id: type: - string - 'null' 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' components: schemas: cursor_pagination: type: object properties: next: type: - string - 'null' prev: type: - string - 'null' self: type: - string - 'null' included: type: array items: type: object properties: id: type: string type: type: string attributes: type: object relationships: type: object securitySchemes: AccountAPIToken: type: http scheme: bearer G2OAuth: type: oauth2 flows: authorizationCode: tokenUrl: https://www.g2.com/oauth/token authorizationUrl: https://www.g2.com/oauth/authorize scopes: openid: OpenID Connect default scope profile: Profile information on current user data_subscriptions.read: Read Data Subscription records data_subscriptions.read_write: Modify Data Subscription records partner:partner-id.read: Access records created in Partner realm performance_analytics.read: Read Performance Analytics data