Signals API
Behavior
Given a query, the Search API computes a unified time-series signal, 12-month forecast, a historical sentiment score over time, and a set of additional measures and scores that describe the query (such as the signals growth rate, momentum, and novelty scores) in near real-time.
To produce this output the system first uses natural language understanding to determine the intent of the user's query, it then retrieves data from different data sources relevant to the query (such as various pre-built document indexes and external APIs) and combines them, using a novel time-shifting cross-correlation algorithm, to produce unified signal overtime. The unified signal is extrapolated using machine learning methods to compute the forecast and is analyzed to produce the additional indicators.
GET /api/v1/query-terms/{term}/signals
Request Fields
Attribute | Description |
|---|---|
term string | (Path Parameter - Required) |
sources string or null | (Optional) Comma-separated data sources to generate results from. Defaults to all sources. Available sources: aylien, twitter, reddit, pinterest, tiktok, google, patents, weibo, instagram, pubmed, clinical_trials |
geo string or null | (Optional) ISO-2 geo code specifying the country where results should be filtered from. Defaults to null for global |
check_cache string or null | (Optional) Boolean flag to indicate whether to use cached results or not. Defaults to true. |
Response Fields
Attribute | Description |
|---|---|
x_term string | The query term |
y_term string | Deprecated |
geo string | The country the results are filtered for. (ISO-2 code) |
is_sparse boolean | Describes the availability of data used to compute the signal. A true value means the system found limited data points to use. |
inflection_markers list of strings | A list of dates indicating when inflection points occurred. Follows the format ‘YYYY-MM-DD’. |
deflection_markers list of strings | A list of dates indicating when deflection points occurred. Follows the format ‘YYYY-MM-DD’. |
rolling_avg list of lists | The unified signal that describes consumer interest of the trend. Represented as a time series that increments daily for up to 3 years. The nested arrays follow the format [“YYYY-MM-DD“, float], where the second element is a number in the range 0 to 100 and 100 is at point where the measured saturation for the trend is at its highest. Also known as the Impact Score |
absolute_score list of lists | The absolute impact score represents the raw share of the volume of mentions and can be used to compare different trends based on the pure volume of conversation. |
source_distribution dict | Describes the overall distribution of the volume of data used to computed the signal, where the sum of each source listed equals 100% |
source_distribution.SOCIAL float | The percent volume of social data. |
source_distribution.NEWS float | The percent volume of news data. |
source_distribution.PATENTS float | The percent volume of patent data. |
source_distribution.SEARCH float | The percent volume of search data. |
social_distribution dict | Describes the overall distribution of the volume of data used to computed the SOCIAL part of the signal, where the sum of each source listed equals 100% |
raw_count dict | Describes the count of retrieved documents for each of the listed data sources |
growth_rate_max float | A score computed by finding percent change between first and last values in the signal. |
growth_rate_3yr float | A score computed by finding percent change between the most recent signal score and the score 3yrs ago. |
growth_rate_1yr float | A score computed by finding percent change between the most recent signal score and the score 1 year ago. |
growth_rate_6m float | A score computed by finding percent change between the most recent signal score and the score 6 months ago. |
growth_rate_3m float | A score computed by finding percent change between the most recent signal score and the score 3 months ago. |
growth_rate_1m float | A score computed by finding percent change between the most recent signal score and the score 1 month ago. |
growth_rate_2w float | A score computed by finding percent change between the most recent signal score and the score 2 weeks ago. |
growth_rate_1w float | A score computed by finding percent change between the most recent signal score and the score 1 week ago. |
polarity float | The most recent sentiment value. Can be in the range -1 and 1. |
polarity_class enum | A label that describes the overall sentiment of online conversation. Cann be one of the possible values “POSITIVE” or “NEGATIVE”. |
sentiment_score float | A numerical score that describes the overall sentiment score of conversation. Value is from 306 - 1534 (higher is more positive). |
novelty_score float | A numerical score that describes how novel or well known the trend is. Value is from 306 - 1534 (higher is more novel). |
past_score float | A numerical score that describes whether the trend occurred in the past or if it is predicted to gain greater interest in the future. Value is from 306 - 1534 (higher indicates higher interest). |
packed_polarity list of lists | A time series that describes the sentiment, increments daily for up to 3 years. The nested arrays follow the format [“YYYY-MM-DD“, float], where the second element is a number in the range -1 to 1 and 1 means measured chatter was highly positive for the given day. |
forecast list of dicts | (Deprecated) 12 month normalized forecast of the signal, incremented daily. |
raw_forecast list of dicts | 12 month forecast of the signal, incremented daily, based off the Impact Score (rolling_avg) |
raw_forecast.date_key string | Follows the format ‘YYYY-MM-DD’ |
raw_forecast.saturation float | Predicted signal value. Relative to the signal values and unbounded to a range. |
raw_forecast.min_conf_int_95 float | Lower bound 95% confidence interval |
raw_forecast.max_conf_int_95 float | Upper bound 95% confidence interval |
raw_forecast.min_conf_int_75 float | Lower bound 75% confidence interval |
raw_forecast.max_conf_int_75 float | Upper bound 75% confidence interval |
trend_norm | (Deprecated) Same as rolling_avg |
absolute_score_forecast | 12 month forecast of the signal, incremented daily, based off absolute_score |
future_score float | A numerical value that describes the slope of the forecast. Is a value in the range 306 - 1534 where higher means the trend is predicted to trend sharply upwards. |
alert boolean | (BETA) Is set to “true“ when the system identifies an inflection point in the past week, and would typically send an email alert to any user monitoring the trend. |
leader enum | Describes where the source of the chatter has originated from and spread. Of the possible values “SEARCH“, “NEWS“, “SOCIAL“, or “PATENTS“. |
days_lead integer | Given the leading indicator (leader attribute), describes by how many days the source carried the trend. |
growth_label enum | A label that describes the historical direction of the trend over a 3 month period. Can be of the possibles values “growing“, “declining“, or “stationary“. |
speed_label enum | The speed describes the rate of change in any direction over 3 months. An exponential trend represents a very sudden and steep slope, and an accelerating trend is a less steep slope. A stationary trend is one that has experienced no overall change. Can be of the possible values “stationary“, “accelerating“, or “exponential“. |
volatility_label enum | A label that describes how chaotic or constant a trend a has been historically. Can be of the possible values “low“, “medium“, or “high“, where high means the trend has been very unstable. |
growth_label_1m enum | A label that describes the historical direction of the trend over a 1 month period. |
growth_label_3m enum | A label that describes the historical direction of the trend over a 3 month period |
growth_label_6m enum | A label that describes the historical direction of the trend over a 6 month period. |
growth_label_12m enum | A label that describes the historical direction of the trend over a 12 month period |
growth_label_36m enum | A label that describes the historical direction of the trend over a 36 month period |
speed_label_1m enum | The speed describes the rate of change in any direction over 1 month |
speed_label_3m enum | The speed describes the rate of change in any direction over 3 months. |
speed_label_6m enum | The speed describes the rate of change in any direction over 6 months. |
speed_label_12m enum | The speed describes the rate of change in any direction over 12 months. |
speed_label_36m enum | The speed describes the rate of change in any direction over 36 months. |
volatility_label_1m enum | A label that describes how chaotic or constant a trend a has been historically over 1 month |
volatility_label_3m enum | A label that describes how chaotic or constant a trend a has been historically over 3 months |
volatility_label_6m enum | A label that describes how chaotic or constant a trend a has been historically over 6 months |
volatility_label_12m enum | A label that describes how chaotic or constant a trend a has been historically over 12 months |
volatility_label_36m enum | A label that describes how chaotic or constant a trend a has been historically over 36 months |
data_sources array of strings | The set of data sources that have been used to construct the signal; and where there is sufficient data available. The list can include any of the values “social“, “news“, “patents“, or “search“. |
distribution_label enum | A label that describes how concentrated or spread conversation is among different groups of voices. Can be of the values “concentrated“, or “distributed“, where concentrated means the topic is being disproportionately hyped up by a small number of individual voices, where as distributed means conversation is widely and evenly spread. |
seasonality_label enum | Describes the presents of any cyclic trends such as yearly or month peaks. Can be of value “constant” or “seasonal“. |
seasonality_types enum | Describes the classification of seasonality. Can be “Annual”, “Biannual”, “Quarterly”, or “Monthly”. |
diversion_label enum | Deviation from the mean is an indicator that helps identify a sudden increase (or decrease) moment. A divergence score of none means there is no unusual momentum. Can be of the values “positive“, “none“, or “negative“. |
diversion_label_1m enum | Deviation from the mean is an indicator that helps identify a sudden increase (or decrease) moment over 1 month |
diversion_label_3m enum | Deviation from the mean is an indicator that helps identify a sudden increase (or decrease) moment over 3 months |
diversion_label_6m enum | Deviation from the mean is an indicator that helps identify a sudden increase (or decrease) moment over 6 months |
diversion_label_12m enum | Deviation from the mean is an indicator that helps identify a sudden increase (or decrease) moment over 12 months |
diversion_label_36m enum | Deviation from the mean is an indicator that helps identify a sudden increase (or decrease) moment over 36 months |
tone_label enum | Describes the overall tone surround the trend. Can be of the values “positive“, “neutral“, or “negative“. |
tone_label_1m enum | Describes the overall tone surround the trend over 1 months |
tone_label_3m enum | Describes the overall tone surround the trend over 3 months |
tone_label_6m enum | Describes the overall tone surround the trend over 6 months |
tone_label_12m enum | Describes the overall tone surround the trend over 12 months |
tone_label_36m enum | Describes the overall tone surround the trend over 36 months |
forecast_label enum | Relative to today, the saturation level of the trend's expected forecast over the next 12 months. Can be of the value “growing“, “declining“, or “stationary“. |
forecast_label_1m enum | Relative to today, the saturation level of the trend's expected forecast over the next 1 months. |
forecast_label_3m enum | Relative to today, the saturation level of the trend's expected forecast over the next 3 months. |
forecast_label_6m enum | Relative to today, the saturation level of the trend's expected forecast over the next 6 months. |
forecast_label_12m enum | Relative to today, the saturation level of the trend's expected forecast over the next 12 months. |
forecast_label_max enum | Relative to today, the saturation level of the trend's expected forecast over the next 36 months. |
novelty_label enum | A label that describes how novel or well known the trend is. Can be of the value “established“, or “novel“. |
totem_future float | Describes the magnitude of the slope of the forecast on scale of 0 to 100. |
totem_tone float | Describes the magnitude of the overall sentiment on scale of 0 to 100. |
totem_speed float | Describes the magnitude of the rate of change on scale of 0 to 100. |
forecast_abs_growth_3m float | The delta between first and last values in the forecasted signal over 3 months. |
forecast_abs_growth_6m float | The delta between first and last values in the forecasted signal over 6 months. |
forecast_abs_growth_12m float | The delta between first and last values in the forecasted signal over 12 months. |
variable_importance array of hashes | Each hash contains a single |
Sample Request
GET api/v1/query-terms/cdbc/signals HTTP/1.1
Content-Type: application/json
Authorization: Bearer <TOKEN>
Sample Response
{
"x_term": "cdbc",
"y_term": null,
"entities": [],
"geo": null,
"date_updated": "2023-03-29 21:10:45.772580",
"is_sparse": false,
"inflection_markers": [
"2020-08-23",
"2020-10-11",
"2020-12-25",
...
],
"deflection_markers": [
"2020-06-09",
"2020-10-24",
"2020-12-01",
...
],
"rolling_avg": [
[
"2020-05-20",
2.1306
],
[
"2020-05-21",
2.31254
],
[
"2020-05-22",
2.46141
],
...
],
"absolute_score": [
[
"2020-05-20",
4.1779
],
[
"2020-05-21",
4.22183
],
[
"2020-05-22",
4.25327
],
[
"2020-05-23",
4.27189
],
...
],
"source_distribution": {
"SOCIAL": 0.27904963379286996,
"NEWS": 2.1570057192981116,
"PATENTS": 0.0,
"SEARCH": 97.56394464690901
},
"social_distribution": {
"twitter": 80.43234557806362,
"reddit": 19.56765442193638,
"tiktok": 0.0,
"pinterest": 0.0,
"weibo": 0.0,
"instagram": 0.0
},
"raw_count": {
"twitter": 66,
"reddit_comments": 166,
"pinterest": 0,
"tiktok": 0,
"weibo": 0,
"instagram": 0,
"aylien": 2735
},
"growth_rate_max": 39.51506452642875,
"growth_rate_3yr": 39.51506452642875,
"growth_rate_1yr": 1.1547867545283437,
"growth_rate_6m": 0.9229987260847929,
"growth_rate_3m": -0.002162289480136043,
"growth_rate_1m": 0.3801946253052705,
"growth_rate_2w": 0.017133059261947036,
"growth_rate_1w": -0.05232773908652665,
"polarity": -0.010343999999999997,
"polarity_class": "NEUTRAL",
"sentiment_score": 888.24,
"novelty_score": 1528.0,
"past_score": 1016.49,
"packed_polarity": [
[
20200330,
0.0
],
[
20200331,
0.0
],
[
20200401,
0.0
],
[
20200402,
0.0
],
...
],
"forecast": [
{
"date_key": "2023-03-28",
"saturation": 75.18196630030278,
"min_conf_int_95": 73.15910136837866,
"max_conf_int_95": 76.21201151260541,
"min_conf_int_75": 73.92232890443536,
"max_conf_int_75": 75.44878397654873
},
{
"date_key": "2023-03-29",
"saturation": 74.9337613703974,
"min_conf_int_95": 73.15910136837866,
"max_conf_int_95": 76.21201151260541,
"min_conf_int_75": 73.92232890443536,
"max_conf_int_75": 75.44878397654873
},
{
"date_key": "2023-03-30",
"saturation": 75.06163452171137,
"min_conf_int_95": 73.25535518227692,
"max_conf_int_95": 76.53697395460533,
"min_conf_int_75": 74.07575987535903,
"max_conf_int_75": 75.71656926152322
},
...
],
"raw_forecast": [
{
"date_key": "2023-03-28",
"saturation": 86.32136080047619,
"min_conf_int_95": 86.32136080047619,
"max_conf_int_95": 86.32136080047619,
"min_conf_int_75": 86.32136080047619,
"max_conf_int_75": 86.32136080047619
},
{
"date_key": "2023-03-29",
"saturation": 86.32136080047619,
"min_conf_int_95": 86.32136080047619,
"max_conf_int_95": 86.32136080047619,
"min_conf_int_75": 86.32136080047619,
"max_conf_int_75": 86.32136080047619
},
{
"date_key": "2023-03-30",
"saturation": 86.37318690790683,
"min_conf_int_95": 85.65768137302972,
"max_conf_int_95": 87.08869244278395,
"min_conf_int_75": 86.01543414046826,
"max_conf_int_75": 86.7309396753454
},
...
],
"trend_norm": [
[
"2020-05-20",
1.8556546109228123
],
[
"2020-05-21",
2.01411358047332
],
[
"2020-05-22",
2.143776899021134
],
...
],
"absolute_score_forecast": [
{
"date_key": "2023-03-28",
"saturation": 18.09548,
"min_conf_int_95": 18.09548,
"max_conf_int_95": 18.09548,
"min_conf_int_75": 18.09548,
"max_conf_int_75": 18.09548
},
{
"date_key": "2023-03-29",
"saturation": 18.09548,
"min_conf_int_95": 18.09548,
"max_conf_int_95": 18.09548,
"min_conf_int_75": 18.09548,
"max_conf_int_75": 18.09548
},
{
"date_key": "2023-03-30",
"saturation": 18.046488088674757,
"min_conf_int_95": 17.895062427732736,
"max_conf_int_95": 18.197913749616777,
"min_conf_int_75": 17.970775258203744,
"max_conf_int_75": 18.12220091914577
},
...
],
"future_score": 1128.775,
"alert": false,
"leader": "NEWS",
"days_lead": 8,
"growth_label": "growing",
"speed_label": "exponential",
"volatility_label": "low",
"growth_label_1m": "growing",
"growth_label_3m": "stationary",
"growth_label_6m": "stationary",
"growth_label_12m": "stationary",
"growth_label_36m": "stationary",
"speed_label_1m": "exponential",
"speed_label_3m": "stationary",
"speed_label_6m": "stationary",
"speed_label_12m": "stationary",
"speed_label_36m": "stationary",
"volatility_label_1m": "low",
"volatility_label_3m": "low",
"volatility_label_6m": "low",
"volatility_label_12m": "low",
"volatility_label_36m": "medium",
"data_sources": [
"social",
"search",
"news"
],
"distribution_label": "concentrated",
"seasonality_label": "seasonal",
"seasonality_types": [
"Annual"
],
"diversion_label": "positive",
"tone_label": "neutral",
"diversion_label_1m": "positive",
"diversion_label_3m": "positive",
"diversion_label_6m": "positive",
"diversion_label_12m": "positive",
"diversion_label_36m": "none",
"tone_label_1m": "neutral",
"tone_label_3m": "neutral",
"tone_label_6m": "neutral",
"tone_label_12m": "neutral",
"tone_label_36m": "neutral",
"forecast_label": "stationary",
"forecast_label_1m": "growing",
"forecast_label_3m": "growing",
"forecast_label_6m": "growing",
"forecast_label_12m": "stationary",
"forecast_label_max": "stationary",
"novelty_label": "novel",
"totem_future": 80.42,
"totem_tone": 47.41,
"totem_speed": 100.0,
"forecast_abs_growth_3m": 21.278783723034138,
"forecast_abs_growth_6m": 8.637967237239138,
"forecast_abs_growth_12m": 12.117680101023794,
"variable_importance": [
{
"variable": "Impact Score Scale",
"importance": 27.130641373133095
},
{
"variable": "Deflection Point",
"importance": 18.300506256848763
},
{
"variable": "Distribution Label",
"importance": 11.250907852530066
},
{
"variable": "Inflection Point",
"importance": 8.507932374717736
},
{
"variable": "Month",
"importance": 7.780778165356331
},
{
"variable": "Date",
"importance": 6.8936896671453916
},
{
"variable": "Tone",
"importance": 5.0048338035288635
},
{
"variable": "Average Impact Score",
"importance": 4.881700543609754
},
{
"variable": "Novelty Label",
"importance": 4.816397664200929
},
{
"variable": "Quarter",
"importance": 3.5122597324029137
},
{
"variable": "Volatility Label",
"importance": 1.9203525665261565
}
],
"failed_sources": []
}