DataForSEO
SEO, search-engine results, keyword research, backlinks and AI visibility data.
Content Analysis – Phrase Trends API
The summary metrics for a keyword, repeated per time period. Each entry carries a date plus total_count, rank, top_domains (each domain and count), sentiment_connotations (anger, happiness, love, sadness, share, fun), connotation_types (positive, negative, neutral), text_categories, page_categories, page_types, countries and languages. date_from, date_to and date_group (day, week, month) set the range and granularity. Use this to see whether mentions of a phrase are rising or falling; for a single point in time use post_dataforseo_content_summary_live. To track a whole product category rather than one phrase, use post_dataforseo_content_category_trends_live.
- Type: array object[]
- dateType: string
_from requiredstarting date of the time range required field date format: "yyyy-mm-dd" example: "2019-01-15"
- keywordType: stringrequired
target keyword required field UTF-8 encoding the keywords will be converted to a lowercase format; Note: to match an exact phrase instead of a stand-alone keyword, use double quotes and backslashes; example: "keyword": ""tesla palo alto"" learn more about rules and limitations of keyword and keywords fields in DataForSEO APIs in this Help Center article
- dateType: string
_group time range which will be used to group the results optional field default value: month possible values: day, week, month
- dateType: string
_to ending date of the time range optional field if you don’t specify this field, today’s date will be used by default date format: "yyyy-mm-dd" example: "2019-01-15"
- initialType: array
_dataset _filters initial dataset filtering parameters optional field initial filtering parameters that apply to fields in the Search endpoint; you can add several filters at once (8 filters maximum); you should set a logical operator and, or between the conditions; the following operators are supported: regex, not_regex, , , >, >=, =, , in, not_in, like,not_like, has, has_not, match, not_match you can use the % operator with like and not_like to match any string of zero or more characters; example: ["domain","", "logitech.com"] [["domain","","logitech.com"],"and",["content_info.connotation_types.negative",">",1000]] [["domain","","logitech.com"]], "and", [["content_info.connotation_types.negative",">",1000], "or", ["content_info.text_category","has",10994]]] for more information about filters, please refer to Content Analysis API – Filters learn more about the initial dataset filters in this help center article.
- internalType: integer
_list _limit maximum number of elements within internal arrays optional field you can use this field to limit the number of elements within the following arrays: top_domains text_categories page_categories countries languages default value: 1 maximum value: 20
- keywordType: object
_fields target keyword fields and target keywords optional field use this parameter to filter the dataset by keywords that certain fields should contain; fields you can specify: title, main_title, previous_title, snippet you can indicate several fields; Note: to match an exact phrase instead of a stand-alone keyword, use double quotes and backslashes; example: "keyword_fields": { "snippet": ""logitech mouse"", "main_title": "sale" }
- mainType: string
_title - previousType: string
_title - snippetType: string
- titleType: string
- pageType: array string[]
_type target page types optional field use this parameter to filter the dataset by page types possible values: "ecommerce", "news", "blogs", "message-boards", "organization"
- rankType: string
_scale defines the scale used for calculating and displaying the rank values optional field you can use this parameter to choose whether rank values are presented on a 0–100 or 0–1000 scale possible values: one_hundred — rank values are displayed on a 0–100 scale one_thousand — rank values are displayed on a 0–1000 scale default value: one_thousand learn more about how this parameter works in this Help Center article
- searchType: string
_mode results grouping type optional field possible grouping types: as_is – returns data on all citations for the target keyword one_per_domain – returns data on one citation of the keyword per domain default value: as_is
- tagType: string
user-defined task identifier optional field the character limit is 255 you can use this parameter to identify the task and match it with the result you will find the specified tag value in the data object of the response
- Type: object200
Successful response
- Type: numbercost
total tasks cost, USD
- Type: integerstatus
_code general status code you can find the full list of the response codes here Note: we strongly recommend designing a necessary system for handling related exceptional or error conditions
- Type: stringstatus
_message general informational message you can find the full list of general informational messages here
- Type: array string[]tasks
array of tasks
- Type: integertasks
_count the number of tasks in the tasks array
- Type: integertasks
_error the number of tasks in the tasks array returned with an error
- Type: numbertasks
.cost cost of the task, USD
- Type: objecttasks
.data contains the same parameters that you specified in the POST request
- Type: stringtasks
.id task identifier unique task identifier in our system in the UUID format
- Type: array string[]tasks
.path URL path
- Type: array string[]tasks
.result array of results
- Type: integertasks
.result _count number of elements in the result array
- Type: objecttasks
.result .connotation _types connotation types contains types of sentiments (sentiment polarity) related to the keyword citation and citation count per each sentiment type possible connotation types: "positive", "negative", "neutral"
- Type: objecttasks
.result .countries countries contains countries and citation count in each country to obtain a full list of available countries, refer to the Locations endpoint
- Type: stringtasks
.result .date date for which the data is provided
- Type: objecttasks
.result .languages languages contains languages and citation count in each language to obtain a full list of available languages, refer to the Languages endpoint
- Type: array string[]tasks
.result .page _categories page categories contains objects with page categories and citation count in each page category to obtain a full list of available categories, refer to the Categories endpoint
- Type: objecttasks
.result .page _types page types contains page types and citation count per each page type
- Type: integertasks
.result .rank rank of all URLs citing the keyword normalized sum of ranks of all URLs citing the target keyword for the given date
- Type: objecttasks
.result .sentiment _connotations sentiment connotations contains sentiments (emotional reactions) related to the target keyword citation and the number of citations per each sentiment possible connotations: "anger", "happiness", "love", "sadness", "share", "fun"
- Type: array string[]tasks
.result .text _categories text categories contains objects with text categories and citation count in each text category to obtain a full list of available categories, refer to the Categories endpoint
- Type: array string[]tasks
.result .top _domains top domains citing the target keyword contains objects with top domains citing the target keyword and citation count per each domain
- Type: integertasks
.result .total _count total number of results in our database relevant to your request
- Type: stringtasks
.result .type type of element = ‘content_analysis_trends’
- Type: integertasks
.status _code status code of the task generated by DataForSEO; can be within the following range: 10000-60000 you can find the full list of the response codes here
- Type: stringtasks
.status _message informational message of the task you can find the full list of general informational messages here
- Type: stringtasks
.time execution time, seconds
- Type: stringtime
execution time, seconds
- Type: stringversion
the current version of the API
application/json - 400
Bad request
- 401
Unauthorized
- 402
The request cannot proceed because a billing requirement is not met.
- 403
The account is not permitted to perform this operation.
- 429
Rate limit exceeded
- 500
Internal server error
- 502
The service could not complete the request.
- 503
The API or billing service is temporarily unavailable.
- 504
The service timed out while processing the request.
- default
The operation failed. Keep the response request ID when contacting Felo support.
curl https://openapi.felo.ai/v1/beta/dataforseo/content_analysis/phrase_trends/live \
--request POST \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN' \
--data '[
{
"keyword": "",
"keyword_fields": {
"title": "",
"main_title": "",
"previous_title": "",
"snippet": ""
},
"page_type": [
""
],
"search_mode": "",
"internal_list_limit": 1,
"date_from": "",
"date_to": "",
"date_group": "",
"initial_dataset_filters": [],
"rank_scale": "",
"tag": ""
}
]'
{
"version": "string",
"status_code": 1,
"status_message": "string",
"time": "string",
"cost": 1,
"tasks_count": 1,
"tasks_error": 1,
"tasks": [
"string"
],
"tasks.id": "string",
"tasks.status_code": 1,
"tasks.status_message": "string",
"tasks.time": "string",
"tasks.cost": 1,
"tasks.result_count": 1,
"tasks.path": [
"string"
],
"tasks.data": {},
"tasks.result": [
"string"
],
"tasks.result.type": "string",
"tasks.result.date": "string",
"tasks.result.total_count": 1,
"tasks.result.rank": 1,
"tasks.result.top_domains": [
"string"
],
"tasks.result.sentiment_connotations": {},
"tasks.result.connotation_types": {},
"tasks.result.text_categories": [
"string"
],
"tasks.result.page_categories": [
"string"
],
"tasks.result.page_types": {},
"tasks.result.countries": {},
"tasks.result.languages": {}
}