Analytics API
Retrieve and analyze user interactions with your Helpjuice knowledge base
Table of Contents
Overview Searches Retrieve searches Retrieve search by ID Retrieve search by ID Keywords Retrieve keywords Retrieve keyword by ID Retrieve keyword by ID Articles Retrieve articles Retrieve article by ID Retrieve article by ID Retrieve most searched terms that led to this article Retrieve users that viewed this article Categories Retrieve categories Retrieve category by ID Retrieve category by ID Users Retrieve users Retrieve user by ID Retrieve user by ID Retrieve most searched terms by a user Retrieve articles most viewed by this user Retrieve contributions made by this user Groups Retrieve groups Retrieve group by ID Retrieve group by ID Retrieve most viewed articles by users in this group. Retrieve popular articles created by users in this group Retrieve analytics for users in this group Retrieve most searched terms by users in this group Best PracticesThe Analytics API allows you to access detailed data on user searches, article views, and engagement metrics. This enables you to monitor and improve the effectiveness of your knowledge base content.
In this article, you’ll learn:
- How to access the Analytics API endpoints
- Available filters and parameters for customizing data retrieval
- Interpreting the API response data
- Best practices for utilizing analytics data
Overview
API V3 now has support for analytics endpoints. You can retrieve the analytical data that we display in the dashboard using our API. The same rules for authentication and pagination for API V3 applies to the analytics endpoints.
We cache the results for 1 hour.
Searches
Retrieve searches
URL
GET https://<your-account>.helpjuice.com/api/v3/analytics/searches
FILTERS
page | type: Number, current page number. Default is 1. |
limit | type: Number, limit per page (maximum is 1000). Default is 25. |
since | type: String, filters by searches after or at this date (format: YYYY-MM-DD). Default is 1 week ago. |
upto | type: String, filters by searches before this date (format: YYYY-MM-DD). Default is today. |
keyword | type: String, filters by searches that contain this keyword. |
found | type: Boolean, filters by searches where the user found an answer for his query. |
bounced | type: Boolean, filters by searches that have no views. |
dead_end | type: Boolean, filters by searches where the user didn't find an answer for his query. |
order_by[field] |
type: String, orders the searches by the specified field. Can be one of the following:
|
order_by[dir] | type: String, orders by the specified direction. asc for ascending and desc for descending. Default is desc |
analytics_type |
type: String, search visibility. Default is public_and_private. Can be one of the following:
|
RESPONSE raw
{
"meta": {
"current": 1,
"limit": 25,
"total_pages": 1,
"total_count": 4
},
"searches": [
{
"id": 1,
"query": "test1",
"ip": "::1",
"search_count": 1,
"found_answer": true,
"contacted_support": false,
"created_at": "2023-03-14T12:02:51.313Z",
"updated_at": "2023-03-14T12:03:05.228Z",
"clicked": true,
"readings": 1,
"found_answers": 5,
"views": 2,
"language_id": 1,
"search_type": 1,
"user_id": 1
},
{
"id": 2,
"query": "test2",
"ip": "::1",
"search_count": 1,
"found_answer": false,
"contacted_support": false,
"created_at": "2023-03-14T12:11:29.235Z",
"updated_at": "2023-03-14T12:11:29.235Z",
"clicked": null,
"readings": null,
"found_answers": 0,
"views": null,
"language_id": 1,
"search_type": 1,
"user_id": 1
},
{
"id": 3,
"query": "test3",
"ip": "::1",
"search_count": 1,
"found_answer": true,
"contacted_support": false,
"created_at": "2023-03-14T12:11:31.301Z",
"updated_at": "2023-03-14T12:11:31.301Z",
"clicked": null,
"readings": null,
"found_answers": 5,
"views": null,
"language_id": 1,
"search_type": 1,
"user_id": 1
},
{
"id": 4,
"query": "test4",
"ip": "::1",
"search_count": 1,
"found_answer": false,
"contacted_support": false,
"created_at": "2023-03-14T12:11:37.935Z",
"updated_at": "2023-03-14T12:11:41.147Z",
"clicked": null,
"readings": null,
"found_answers": 0,
"views": null,
"language_id": 1,
"search_type": 1,
"user_id": 1
}
]
}
Retrieve search by ID
Retrieve search by ID
URL
GET https://<your-account>.helpjuice.com/api/v3/analytics/searches/<id>
RESPONSE raw
{
"search": {
"id": 1,
"query": "test1",
"ip": "::1",
"search_count": 1,
"found_answer": true,
"contacted_support": false,
"created_at": "2023-03-14T12:02:51.313Z",
"updated_at": "2023-03-14T12:03:05.228Z",
"clicked": true,
"readings": 1,
"found_answers": 5,
"views": 2,
"language_id": 1,
"search_type": 1,
"user_id": 1
}
}
Keywords
Retrieve keywords
URL
GET https://<your-account>.helpjuice.com/api/v3/analytics/keywords
FILTERS
page | type: Number, current page number. Default is 1. |
limit | type: Number, limit per page (maximum is 1000). Default is 25. |
since | type: String, only keywords seen after or at this date (format: YYYY-MM-DD). Default is 1 week ago. |
upto | type: String, only keywords seen before this date (format: YYYY-MM-DD). Default is today. |
order_by[field] |
type: String, orders by a specified field. Can be one of the following:
|
order_by[dir] | type: String, orders by the specified direction. asc for ascending and desc for descending. Default is desc |
RESPONSE raw
{
"meta": {
"current": 1,
"limit": 25,
"total_pages": 1,
"total_count": 2
},
"keywords": [
{
"id": 1,
"name": "test1",
"clicked": 1,
"views": 2,
"readings": 1,
"searches": 2,
"found_answers": 2
},
{
"id": 2,
"name": "test2",
"clicked": 0,
"views": 0,
"readings": 0,
"searches": 1,
"found_answers": 0
}
]
}
Retrieve keyword by ID
Retrieve keyword by ID
URL
GET https://<your-account>.helpjuice.com/api/v3/analytics/keywords/<id>
FILTERS
since | type: String, only use searches after or at this date (format: YYYY-MM-DD). Default is 1 week ago. |
upto | type: String, only use searches before this date (format: YYYY-MM-DD). Default is today. |
RESPONSE raw
{
"keyword": {
"id": 1,
"name": "test",
"clicked": 1,
"views": 2,
"readings": 1,
"searches": 2,
"found_answers": 2
}
}
Articles
Retrieve articles
URL
GET https://<your-account>.helpjuice.com/api/v3/analytics/questions
FILTERS
page | type: Number, current page number. Default is 1. |
limit | type: Number, limit per page (maximum is 1000). Default is 25. |
since | type: String, only articles with analytics after or at this date (format: YYYY-MM-DD). Default is 1 week ago. |
upto | type: String, only articles with analytics before this date (format: YYYY-MM-DD). Default is today. |
order_by[field] |
type: String, orders by a specified field. Can be one of the following:
|
analytics_type |
type: String, article visibility. Default is public_and_private. Can be one of the following:
|
RESPONSE raw
{
"meta": {
"current": 1,
"limit": 25,
"total_pages": 1,
"total_count": 2
},
"questions": [
{
"id": 1,
"name": "Test1",
"language": "en_US",
"views": 10,
"readings": 2,
"likes": 0,
"dislikes": 0,
"avg_seconds_spent": 530,
"updated_at": "2023-03-10T15:32:08.510Z"
},
{
"id": 2,
"name": "Test2",
"language": "pt_BR",
"views": 8,
"readings": 3,
"likes": 0,
"dislikes": 0,
"avg_seconds_spent": 16,
"updated_at": "2023-03-10T11:47:16.841Z"
}
]
}
Retrieve article by ID
Retrieve article by ID
URL
GET https://<your-account>.helpjuice.com/api/v3/analytics/questions/<id>
FILTERS
since | type: String, only check analytics after or at this date (format: YYYY-MM-DD). Default is 1 week ago. |
upto | type: String, only check analytics before this date (format: YYYY-MM-DD). Default is today. |
RESPONSE raw
{
"question": {
"id": 1,
"name": "Test1",
"language": "en_US",
"views": 10,
"readings": 2,
"likes": 0,
"dislikes": 0,
"avg_seconds_spent": 530,
"updated_at": "2023-03-10T15:32:08.510Z"
}
}
Retrieve most searched terms that led to this article
URL
GET https://<your-account>.helpjuice.com/api/v3/analytics/questions/<id>/terms
FILTERS
page | type: Number, current page number. Default is 1. |
limit | type: Number, limit per page (maximum is 1000). Default is 25. |
since | type: String, only check analytics after or at this date (format: YYYY-MM-DD). Default is 1 week ago. |
upto | type: String, only check analytics before this date (format: YYYY-MM-DD). Default is today. |
RESPONSE raw
{
"meta": {
"current": 1,
"limit": 25,
"total_pages": 1,
"total_count": 1
},
"terms": [
{
"term": "test",
"created_at": "2023-03-14T12:02:51.313Z",
"search_count": 1
}
]
}
Retrieve users that viewed this article
URL
GET https://<your-account>.helpjuice.com/api/v3/analytics/questions/<id>/users
FILTERS
page | type: Number, current page number. Default is 1. |
limit | type: Number, limit per page (maximum is 1000). Default is 25. |
since | type: String, only check analytics after or at this date (format: YYYY-MM-DD). Default is 1 week ago. |
upto | type: String, only check analytics before this date (format: YYYY-MM-DD). Default is today. |
RESPONSE raw
{
"meta": {
"current": 1,
"limit": 25,
"total_pages": 1,
"total_count": 1
},
"users": [
{
"id": 1,
"name": "John Doe",
"last_sign_in_at": "2023-03-24T11:51:56.460Z",
"times_viewed_question": 2
}
]
}
Categories
Retrieve categories
URL
GET https://<your-account>.helpjuice.com/api/v3/analytics/categories
FILTERS
page | type: Number, current page number. Default is 1. |
limit | type: Number, limit per page (maximum is 1000). Default is 25. |
since | type: String, only categories with views after or at this date (format: YYYY-MM-DD). Default is 1 week ago. |
upto | type: String, only categories with views before this date (format: YYYY-MM-DD). Default is today. |
RESPONSE raw
{
"meta": {
"current": 1,
"limit": 25,
"total_pages": 1,
"total_count": 1
},
"categories": [
{
"id": 1,
"name": "Test 1",
"views": 1
}
]
}
Retrieve category by ID
Retrieve category by ID
URL
GET https://<your-account>.helpjuice.com/api/v3/analytics/searches/<id>
FILTERS
since | type: String, only count views after or at this date (format: YYYY-MM-DD). Default is 1 week ago. |
upto | type: String, only count views before this date (format: YYYY-MM-DD). Default is today. |
RESPONSE raw
{
"category": {
"id": 1,
"name": "Test 1",
"views": 1
}
}
Users
Retrieve users
URL
GET https://<your-account>.helpjuice.com/api/v3/analytics/users
FILTERS
page | type: Number, current page number. Default is 1. |
limit | type: Number, limit per page (maximum is 1000). Default is 25. |
since | type: String, only check analytics after or at this date (format: YYYY-MM-DD). Default is 1 week ago. |
upto | type: String, only check analytics before this date (format: YYYY-MM-DD). Default is today. |
RESPONSE raw
{
"meta": {
"current": 1,
"limit": 3,
"total_pages": 1,
"total_count": 3
},
"metrics": {
"active_authors": 1,
"articles_updated": 19,
"searches": 4
},
"users": [
{
"id": 1,
"name": "John Doe",
"role_id": "superadmin",
"articles_updated": 19,
"searches": 4,
"views": 29,
"readings": 8,
"current_sign_in_at": "2023-03-23T14:18:49.026Z",
"last_contributed": "2023-03-23T14:12:10.763Z"
},
{
"id": 3,
"name": "Bar Foo",
"role_id": "viewer",
"articles_updated": 0,
"searches": 0,
"views": 0,
"readings": 0,
"current_sign_in_at": "2023-03-23T13:23:04.052Z",
"last_contributed": null
},
{
"id": 2,
"name": "Foo Bar",
"role_id": "superadmin",
"articles_updated": 0,
"searches": 0,
"views": 0,
"readings": 0,
"current_sign_in_at": "2023-03-23T13:22:52.627Z",
"last_contributed": null
}
]
}
Retrieve user by ID
Retrieve user by ID
URL
GET https://<your-account>.helpjuice.com/api/v3/analytics/users/<id>
FILTERS
since | type: String, only check analytics after or at this date (format: YYYY-MM-DD). Default is 1 week ago. |
upto | type: String, only check analytics before this date (format: YYYY-MM-DD). Default is today. |
RESPONSE raw
{
"user": {
"id": 1,
"name": "John Doe",
"role_id": "superadmin",
"articles_updated": 19,
"searches": 4,
"views": 31,
"readings": 10,
"current_sign_in_at": "2023-03-23T14:22:57.089Z",
"last_contributed": "2023-03-23T14:21:43.527Z"
}
}
Retrieve most searched terms by a user
URL
GET https://<your-account>.helpjuice.com/api/v3/analytics/users/<id>/terms
FILTERS
page | type: Number, current page number. Default is 1. |
limit | type: Number, limit per page (maximum is 1000). Default is 25. |
since | type: String, only check analytics after or at this date (format: YYYY-MM-DD). Default is 1 week ago. |
upto | type: String, only check analytics before this date (format: YYYY-MM-DD). Default is today. |
RESPONSE raw
{
"meta": {
"current": 1,
"limit": 3,
"total_pages": 1,
"total_count": 3
},
"terms": [
{
"query": "test1",
"search_count": 2,
"readings": 1
},
{
"query": "test2",
"search_count": 1,
"readings": 0
},
{
"query": "test3",
"search_count": 1,
"readings": 0
}
]
}
Retrieve articles most viewed by this user
URL
GET https://<your-account>.helpjuice.com/api/v3/analytics/users/<id>/questions
FILTERS
page | type: Number, current page number. Default is 1. |
limit | type: Number, limit per page (maximum is 1000). Default is 25. |
since | type: String, only check analytics after or at this date (format: YYYY-MM-DD). Default is 1 week ago. |
upto | type: String, only check analytics before this date (format: YYYY-MM-DD). Default is today. |
RESPONSE raw
{
"meta": {
"current": 1,
"limit": 25,
"total_pages": 1,
"total_count": 2
},
"questions": [
{
"id": 11,
"name": "Article 1",
"views": 10,
"seconds_spent": 1060
},
{
"id": 9,
"name": "Article 2",
"views": 8,
"seconds_spent": 50
}
]
}
Retrieve contributions made by this user
URL
GET https://<your-account>.helpjuice.com/api/v3/analytics/users/<id>/contributions
FILTERS
page | type: Number, current page number. Default is 1. |
limit | type: Number, limit per page (maximum is 1000). Default is 25. |
since | type: String, only check analytics after or at this date (format: YYYY-MM-DD). Default is 1 week ago. |
upto | type: String, only check analytics before this date (format: YYYY-MM-DD). Default is today. |
RESPONSE raw
{
"meta": {
"current": 1,
"limit": 25,
"total_pages": 1,
"total_count": 2
},
"contributions": [
{
"id": 5,
"name": "Article 1",
"updated_at": "2023-03-10T15:33:19.681Z"
},
{
"id": 1,
"name": "Article 2",
"updated_at": "2023-03-08T14:03:46.605Z"
}
]
}
Groups
Retrieve groups
URL
GET https://<your-account>.helpjuice.com/api/v3/analytics/groups
FILTERS
page | type: Number, current page number. Default is 1. |
limit | type: Number, limit per page (maximum is 1000). Default is 25. |
since | type: String, only check analytics after or at this date (format: YYYY-MM-DD). Default is 1 week ago. |
upto | type: String, only check analytics before this date (format: YYYY-MM-DD). Default is today. |
RESPONSE raw
{
"meta": {
"current": 1,
"limit": 2,
"total_pages": 1,
"total_count": 2
},
"metrics": {
"active_groups": 1,
"articles_updated": 20,
"searches": 11
},
"groups": [
{
"id": 1,
"name": "Group 1",
"articles_updated": 20,
"searches": 10,
"views": 35,
"readings": 13
},
{
"id": 2,
"name": "Group 2",
"articles_updated": 0,
"searches": 1,
"views": 0,
"readings": 0
}
]
}
Retrieve group by ID
Retrieve group by ID
URL
GET https://<your-account>.helpjuice.com/api/v3/analytics/groups/<id>
FILTERS
since | type: String, only check analytics after or at this date (format: YYYY-MM-DD). Default is 1 week ago. |
upto | type: String, only check analytics before this date (format: YYYY-MM-DD). Default is today. |
RESPONSE raw
{
"group": {
"id": 1,
"name": "Group 1",
"articles_updated": 20,
"searches": 10,
"views": 35,
"readings": 13
}
}
Retrieve most viewed articles by users in this group.
URL
GET https://<your-account>.helpjuice.com/api/v3/analytics/groups/<id>/viewed_articles
FILTERS
page | type: Number, current page number. Default is 1. |
limit | type: Number, limit per page (maximum is 1000). Default is 25. |
since | type: String, only check analytics after or at this date (format: YYYY-MM-DD). Default is 1 week ago. |
upto | type: String, only check analytics before this date (format: YYYY-MM-DD). Default is today. |
RESPONSE raw
{
"meta": {
"current": 1,
"limit": 25,
"total_pages": 1,
"total_count": 2
},
"questions": [
{
"id": 1,
"name": "Test1",
"views": 10,
"seconds_spent": 1060
},
{
"id": 2,
"name": "Test2",
"views": 8,
"seconds_spent": 50
}
]
}
Retrieve popular articles created by users in this group
URL
GET https://<your-account>.helpjuice.com/api/v3/analytics/groups/<id>/created_articles
FILTERS
page | type: Number, current page number. Default is 1. |
limit | type: Number, limit per page (maximum is 1000). Default is 25. |
since | type: String, only check analytics after or at this date (format: YYYY-MM-DD). Default is 1 week ago. |
upto | type: String, only check analytics before this date (format: YYYY-MM-DD). Default is today. |
RESPONSE raw
{
"meta": {
"current": 1,
"limit": 25,
"total_pages": 1,
"total_count": 2
},
"questions": [
{
"id": 1,
"name": "Test1",
"views": 10,
"readings": 2,
"seconds_spent": 1060
},
{
"id": 2,
"name": "Test2",
"views": 8,
"readings": 3,
"seconds_spent": 50
}
]
}
Retrieve analytics for users in this group
URL
GET https://<your-account>.helpjuice.com/api/v3/analytics/groups/<id>/users
FILTERS
page | type: Number, current page number. Default is 1. |
limit | type: Number, limit per page (maximum is 1000). Default is 25. |
since | type: String, only check analytics after or at this date (format: YYYY-MM-DD). Default is 1 week ago. |
upto | type: String, only check analytics before this date (format: YYYY-MM-DD). Default is today. |
RESPONSE raw
{
"meta": {
"current": 1,
"limit": 2,
"total_pages": 1,
"total_count": 2
},
"users": [
{
"id": 1,
"name": "John Doe",
"role_id": "superadmin",
"searches": 7,
"articles_updated": 20,
"views": 35,
"readings": 13,
"current_sign_in_at": "2023-03-24T13:02:48.714Z"
},
{
"id": 2,
"name": "Bar Foo",
"role_id": "viewer",
"searches": 3,
"articles_updated": 0,
"views": 0,
"readings": 0,
"current_sign_in_at": "2023-03-23T18:32:59.757Z"
}
]
}
Retrieve most searched terms by users in this group
URL
GET https://<your-account>.helpjuice.com/api/v3/analytics/groups/<id>/terms
FILTERS
page | type: Number, current page number. Default is 1. |
limit | type: Number, limit per page (maximum is 1000). Default is 25. |
since | type: String, only check analytics after or at this date (format: YYYY-MM-DD). Default is 1 week ago. |
upto | type: String, only check analytics before this date (format: YYYY-MM-DD). Default is today. |
RESPONSE raw
{
"meta": {
"current": 1,
"limit": 2,
"total_pages": 1,
"total_count": 2
},
"terms": [
{
"query": "test1",
"search_count": 2,
"readings": 1
},
{
"query": "test2",
"search_count": 1,
"readings": 0
}
]
}
Best Practices
- Optimize Content: Use insights from search queries to enhance article content and address common user questions.
- User Segmentation: Analyze search data by user segments to tailor content to specific audiences.
- Performance Tracking: Track metrics like views and readings to assess the impact of content updates.
- API Rate Limits: Be mindful of API rate limits to avoid service disruptions.