With the rise of blogs, review sites, and social media platforms, the opinion of the online community has become a vital factor for business performance.
At DataForSEO, we’re always striving to stand on top of the industry trends, so now we’re presenting a new solution – Content Analysis API. It is designed to help you quickly obtain sentiment insights from web mentions to gain a deeper understanding of the consumer mindset.
In this article, we will walk you through the basics of sentiment analysis and will explain a few more advanced principles of using sentiment analysis APIs for brand management projects.
Contents:
What’s sentiment analysis and how do businesses benefit from it?
How to develop a sentiment analyzer and what are the main challenges?
What is a text and sentiment analysis API?
How does Content Analysis API determine the sentiment of web mentions?
What brand management features can be built with Content Analysis API?
What’s sentiment analysis and how do businesses benefit from it?
Sentiment analysis, also known as opinion mining, is the process of inspecting a given text to determine the author’s attitude towards the described topic as positive, negative, or neutral.
These three types of sentiment are called sentiment polarity. However, classifying the polarity of a text is only a basic way to perform sentiment analysis. More advanced approaches go beyond polarity and discern emotional states, such as anger, sadness, and happiness.
Besides that, the levels of positivity/negativity and the strength of the discovered emotions can be quantified. That is, each sentiment can be assigned a score, for example, from 0 to 100, where 0 means no such sentiment present, while 100 means the text is 100% positive/negative or the author is 100% happy/sad, etc.
Commonly, sentiment analysis is performed on textual data from across the web that contains mentions of a person, brand, or product.
Opinion mining has numerous applications in ecommerce, marketing, advertising, and market research. Sentiment analysis insights collected from a variety of web sources can help businesses improve their product features, store locations, pricing, customer experience, marketing campaigns, and more.
Given the abundance of user-generated information and the vast variety of resources where it can be discovered, gathering and analyzing all the data manually would be extremely time-consuming. That is why companies and individuals turn to automatic methods and solutions for sentiment analysis insights.
How to develop a sentiment analyzer and what are the main challenges?
Automated sentiment analysis is usually based on natural language processing (NLP) and machine learning (ML) algorithms, that programmatically determine the emotional tone of a certain text.
In general, there are three ways to train and implement sentiment analysis models which we’ll review below.
Fully automatic
Sentiment analysis is based on ML techniques and self-learning. The algorithm processes certain pre-labeled datasets and learns from them until it can independently identify the sentiments of previously unknown pieces of content.
In this way, it is possible to go through vast datasets faster. However, in some cases, it might be difficult to understand why a certain text was interpreted as positive or negative.
Rule-based
The algorithm uses manually crafted rules from lexicons – lists of words and phrases along with emotions they bring to a text. The system learns a certain set of lexicons and classifies the nature of a given text based on the prevailing group of words.
On the one hand, this approach seems pretty straightforward and allows tracing back the reasons behind specific classifications. On the other hand, it makes the analysis rather limited and might produce misleading results.
The thing is, human language allows employing a wide variety of expressions to convey our emotions, and it is impossible to create an extensive list of all emotional words and their meanings in all possible contexts. For example, kill this feature vs killer feature or it’s killing me vs you’re killing it. We will elaborate on this further in this part.
Hybrid
The hybrid approach represents a mix of two previous methods. Accordingly, it encompasses their advantages (scalability and transparency) and eliminates or at least minimizes their shortcomings.
Challenges
Now, getting back to the challenges associated with sentiment analysis implementation models. Primarily, they arise from the complexities of human languages. Here are some of the most common cases where algorithms struggle with identifying the tone:
- Comparisons. The coffee here is tastier than at Starbucks.
- Contrast. Well yes, but actually no.
- Idioms. Not my cup of tea.
- Irony and sarcasm. I just love having to wait!
- Online language, emojis. Ur new store is just LOL 😀
Worth taking into account that the examples above illustrate some of the challenges with one language only – English. However, the more languages you want to add to your model, the more complications you will encounter. Above all, multilingual sentiment analysis requires a lot of additional preprocessing and coding.
This brings us to another great challenge related to sentiment analysis automation. The thing is, developing and training your system requires being well-versed in programming, data science, and computational linguistics. On top of that, learning NLP concepts and training a text and sentiment analysis model takes plenty of time and resources.
Given these reasons, companies looking to add sentiment analysis functionality to their analytical solutions usually lean towards ready-made technologies, such as APIs.
What is a text and sentiment analysis API?
A sentiment analysis application programming interface (API) is a technology that allows developers, business owners, and analysts to access sentiment analysis data without having to run complex machine-learning algorithms.
In a nutshell, API operates as a communicator between the application that receives data and some state-of-the-art system that processes texts and labels the sentiments in them.
In contrast with spending loads of time to build your own sentiment analysis infrastructure and investing in extra resources, sentiment analysis APIs will allow you to connect the service with your software, custom dashboard, or reporting tool using only a few lines of code. What’s more, reputable API providers, including DataForSEO, usually offer free integration assistance.
Depending on the way sentiment analysis APIs operate, they can be divided into two categories:
For an automatic collection and analysis of mentions by a user-defined keyword.
For sentiment recognition by a user-defined URL.
The second type of API where a user can manually pick the necessary resources for analysis is a good opinion for small-scale research. At the same time, the first type is better for larger research and software development projects that require higher automation and greater scalability.
At DataForSEO, we provide a scalable and affordable solution for sentiment analysis and brand monitoring – Content Analysis API. We’ll tell you more about it in the next part.
How does Content Analysis API determine the sentiment of web mentions?
DataForSEO is a company that’s always striving to offer more innovative approaches to data analysis. One of our latest releases – Content Analysis API – will provide you with a hassle-free way to discover citations of the target keyword or brand from across the web, and analyze the sentiments around it.
To begin with, we’ll walk you through the features offered in Content Analysis API.
First off, it supports over 70 languages. Secondly, on top of identifying and scoring positive, negative, and neutral polarity in any text, Content Analysis API detects the level of the following emotional reactions: anger, happiness, love, sadness, share (desire to share content), and fun.
You can get data on your keyword or brand mentions using the following endpoints:
- Search for all citations of the target keyword and details about each citation.
- Summary of citation data available for the target keyword.
- Sentiment Analysis of citations distributed by positive, negative, and neutral sentiment polarity and by sentiment connotations.
- Rating Distribution of citations along with their details.
- Phrase Trends, that is, citation stats by date for a target keyword.
- Category Trends – citation trends by date in a target category.
Using the Search endpoint, you can apply custom filtration to the dataset that will be retrieved. You can find more information by referring to Filters in Content Analysis API.
Now, let’s take a quick look at how the API works.
Content Analysis API relies on machine learning algorithms trained on vast volumes of carefully selected data. Our model is implemented on the hybrid method, so we can always manually modify the sentiment detection rules which ensures the highest possible accuracy of our product.
Overall, our system is designed to make the API lightning fast and your experience with it – as smooth as possible.
Using Content Analysis API, you will be making only POST requests, and the results will be provided in response right away. You can send up to 2000 API calls per minute.
Here’s an example request and response from the Search endpoint.
[ { "keyword_fields": { "snippet": "logitech" }, "keyword": "logitech", "page_type": [ "ecommerce", "news", "blogs", "message-boards", "organization" ], "search_mode": "as_is", "filters": [ "main_domain", "=", "reviewfinder.ca" ], "internal_list_limit": 8, "order_by": [ "content_info.sentiment_connotations.anger,desc" ], "limit": 10 } ]
{ "version": "0.1.20220913", "status_code": 20000, "status_message": "Ok.", "time": "0.5305 sec.", "cost": 0.0203, "tasks_count": 1, "tasks_error": 0, "tasks": [ { "id": "09131957-0696-0463-0000-7db1bf7abc2b", "status_code": 20000, "status_message": "Ok.", "time": "0.4865 sec.", "cost": 0.0203, "result_count": 1, "path": [ "v3", "content_analysis", "search", "live" ], "data": { "api": "content_analysis", "function": "search", "keyword_fields": { "snippet": "logitech" }, "page_type": [ "ecommerce", "news", "blogs", "message-boards", "organization" ], "search_mode": "as_is", "filters": [ "main_domain", "=", "reviewfinder.ca" ], "internal_list_limit": 8, "limit": 10 }, "result": [ { "offset_token": "eyJWZXJzaW9uIjoxLCJTZWFyY2hBZnRlclZhbHVlcyI6eyJjb250ZW50cy5zZW50aW1lbnRfY29ubm90YXRpb25zLmFuZ3J5IjowLjA5NzU2Nzc1LCJfc2NvcmUiOjIxNTUuNDk0MSwidXJsX2hhc2giOiIzNDM1OTM5MjM3NTMzMTExNDQ1In0sIlRva2VuUmVhbE9mZnNldCI6MH0=", "total_count": 296, "items_count": 10, "items": [ { "type": "content_analysis_search", "url": "https://reviewfinder.ca/top-computer-speakers/edifier-r1280db-vs-logitech-g560/", "domain": "reviewfinder.ca", "main_domain": "reviewfinder.ca", "url_rank": 126, "spam_score": 0, "domain_rank": 493, "fetch_time": "2022-08-12 18:40:33 +00:00", "country": "CA", "language": "en", "score": 5900.941, "page_category": [ 10019, 10167, 10873, 12138, 10002, 10028, 10222, 13813 ], "page_types": [ "ecommerce" ], "ratings": null, "social_metrics": [ { "type": "facebook", "like_count": 13 } ], "content_info": { "content_type": "page_content", "title": "Verdict", "main_title": "Comparing Edifier R1280DB and Logitech G560", "previous_title": "Endorsement summary:", "level": 2, "author": null, "snippet": "After counting and adding up the 77 expert endorsements of the May rankings, Logitech G560 outranks Edifier R1280DB. This is not to say that Edifier R1280DB is a bad option. Like Logitech G560, it is recommended by experts, but less.\nAs can be seen below, Logitech G560 outranks Edifier R1280DB by 13 positions. This indicates that, as of 4 Aug 2022, Logitech G560 is more critically acclaimed than Edifier R1280DB.", "snippet_length": 415, "social_metrics": [ { "type": "facebook", "like_count": 13 } ], "highlighted_text": null, "language": "en", "sentiment_connotations": { "anger": null, "happiness": 0.07077454775571823, "love": 0.0959794893860817, "sadness": 0.030060304328799248, "share": null, "fun": 0.15295149385929108 }, "connotation_types": { "positive": 0.12338598817586899, "negative": 0.41213861107826233, "neutral": 0.4645053744316101 }, "text_category": [ 10019, 10167, 10873, 12138, 10013 ], "date_published": null, "content_quality_score": 90, "semantic_location": 90, "rating": null, "group_date": "2021-09-08 20:23:59 +00:00" } }, { "type": "content_analysis_search", "url": "https://reviewfinder.ca/info/top-gaming-racing-wheels/logitech-g920/", "domain": "reviewfinder.ca", "main_domain": "reviewfinder.ca", "url_rank": 64, "spam_score": 0, "domain_rank": 493, "fetch_time": "2022-07-31 20:16:34 +00:00", "country": "CA", "language": "en", "score": 5751.833, "page_category": [ 10108, 10019, 10167 ], "page_types": [ "ecommerce" ], "ratings": null, "social_metrics": null, "content_info": { "content_type": "page_content", "title": "Logitech G920 - Recommended and relevant!", "main_title": "Logitech G920 - Reviews, Prices, Specs and Alternatives", "previous_title": "ReviewFinder Gaming Racing Wheels Logitech G920", "level": 2, "author": null, "snippet": "According to the meta ranking published on 3 July 2022, Logitech G920 is currently recommended as a high-quality Racing Wheel. Out of 10 expert opinions queried, Logitech G920 received 4 endorsements, from TechRadar (8 Jun 2022), Android Authority (12 Sep 2021) BestCovery (7 Apr 2022) and 1 other..\n1 out of 4 experts ranked Logitech G920 as 'the best Racing Wheel of the month'.\nCompared to other most critically acclaimed Gaming Racing Wheels, Logitech G920 ranks #5 out of 15 in July 2022, - as can be seen from the table below.\nThe definitive sim racing wheel for Xbox One: Realistic steering and pedal action for the latest racing titles. Wheel spokes: Anodized aluminum\nBuilt to last: Durable solid steel ball bearings, stainless steel pedals and hand-stitched leather wheel grip. Glass-filled nylon mounting clamps\nDual-motor force feedback: Realistically simulates the racing experience with smooth, quiet helical gearing\nEasy-access game controls: On-wheel D-pad, console buttons and paddle shifters\nResponsive floor pedal unit: Accelerate, brake and change gears with the feel of an actual car.System requirement:Windows 10, 8.1, Windows 8 or Windows 7 and macOS 10.10+\nLogitech has different serial numbers for packaging vs. product, please keep your receipt for warranty purposes.\nAs can be seen from the ranking below, Logitech G920 is endorsed by the critics this months, and ranks #5.", "snippet_length": 1400, "social_metrics": null, "highlighted_text": null, "language": "en", "sentiment_connotations": { "anger": null, "happiness": 0.15027441084384918, "love": 0.1787649393081665, "sadness": 0.09101732820272446, "share": null, "fun": 0.0640750378370285 }, "connotation_types": { "positive": 0.34157365560531616, "negative": 0.3285507559776306, "neutral": 0.32990556955337524 }, "text_category": [ 10013, 10019, 10167 ], "date_published": null, "content_quality_score": 94, "semantic_location": 94, "rating": null, "group_date": "2021-09-13 05:05:18 +00:00" } }, { "type": "content_analysis_search", "url": "https://reviewfinder.ca/info/top-gaming-racing-wheels/logitech-g27/", "domain": "reviewfinder.ca", "main_domain": "reviewfinder.ca", "url_rank": 104, "spam_score": 0, "domain_rank": 493, "fetch_time": "2022-07-31 21:22:19 +00:00", "country": "CA", "language": "en", "score": 2685.8352, "page_category": [ 10108, 10002, 10028, 10222, 13813 ], "page_types": [ "ecommerce" ], "ratings": null, "social_metrics": null, "content_info": { "content_type": "page_content", "title": "ReviewFinder Gaming Racing Wheels Logitech G27", "main_title": "Logitech G27 - Reviews, Prices, Specs and Alternatives", "previous_title": "Logitech G27 - Reviews, Prices, Specs and Alternatives", "level": 3, "author": null, "snippet": "The powerful, dual-motor force feedback mechanism with helical gearing smoothly and accurately simulates traction loss\nSix-speed shifter with push-down reverse gear allows you to quickly choose exactly the right gear.\nRPM/shift indicator LEDs integrate with racing game software to indicate when the user should shift gears.\nRealistic 11-Inch wheel with leather-wrapped rim provides a more comfortable, true-to-life racing experience for hours on end.\nSteel gas, brake, and clutch pedals deliver precise throttle, braking, and shifting control for heightened realism.\nThe powerful dual-motor force feedback mechanism with helical gearing smoothly and accurately simulates traction loss\nSix-speed shifter with push-down reverse gear allows you to quickly choose exactly the right gear\nRPM/shift indicator LEDs integrate with racing game software to indicate when the user should shift gears\nRealistic 11-Inch wheel with leather-wrapped rim provides a more comfortable and true-to-life racing experience for hours on end\nSteel gas, brake and clutch pedals deliver precise throttle with braking and shifting control for heightened realism\nLogitech G27 is a popular option at the top of the price range. It's in the top 3 bestselling racing wheels and has doesn't have many popular alternatives in the same price range.\nLogitech G27 is C$2814.58 more expensive than the average racing wheel (C$337.16).", "snippet_length": 1398, "social_metrics": null, "highlighted_text": null, "language": "en", "sentiment_connotations": { "anger": null, "happiness": 0.05615948140621185, "love": 0.09969528764486313, "sadness": 0.15229091048240662, "share": null, "fun": 0.0502193346619606 }, "connotation_types": { "positive": 0.5877373814582825, "negative": 0.0651920959353447, "neutral": 0.34710052609443665 }, "text_category": [ 10019, 10167, 10013 ], "date_published": null, "content_quality_score": 90, "semantic_location": 90, "rating": null, "group_date": "2019-08-19 03:00:33 +00:00" } }, { "type": "content_analysis_search", "url": "https://reviewfinder.ca/info/top-computer-speakers/logitech-z213/", "domain": "reviewfinder.ca", "main_domain": "reviewfinder.ca", "url_rank": 137, "spam_score": 0, "domain_rank": 493, "fetch_time": "2022-08-13 11:12:47 +00:00", "country": "CA", "language": "en", "score": 4299.2095, "page_category": [ 10013, 10108 ], "page_types": [ "ecommerce" ], "ratings": null, "social_metrics": null, "content_info": { "content_type": "page_content", "title": "ReviewFinder Computer Speakers Logitech Z213", "main_title": "Logitech Z213 - Reviews, Prices, Specs and Alternatives", "previous_title": "Logitech Z213 - Reviews, Prices, Specs and Alternatives", "level": 3, "author": null, "snippet": "Down-firing subwoofer with adjustable bass control knob: Turn up the bass to add a deeper, richer low end to your music, movies and games\n14W peak power (7W RMS): Enjoy all your audio entertainment in loud, clear stereo sound\nConvenient handheld control pod: Easily power on the speakers, adjust volume and plug in your headset for private listening\nCompact satellite speakers: Inclined design directs great sound to your ears without sacrificing valuable desk space\nPlug-and-play setup: Simple wired connection to audio devices with 3.5mm output (Windows and Mac computers, smartphones, tablets, MP3 players)\nLogitech has different serial numbers for packaging vs. product, please keep your receipt for warranty purposes.\nSpeaker System Type:Multimedia Speakers\nConnections:Inputs: 3.5mm auxiliary input ;Outputs: 3.5mm headphone jack;\nNominal Output Power (Total):14 Watt\nMax (RMS) Output Power (Total):7 Watt\nService & Support Type:1-Year Limited Hardware Warranty\nLogitech Z213 is a very popular option in the middle of the computer speakers price range. It has dozens of popular alternatives in the same price range, such as Edifier R19U or Sanyun SW102.\nLogitech Z213 is C$25.56 cheaper than the average computer speaker (C$71.55).", "snippet_length": 1237, "social_metrics": null, "highlighted_text": null, "language": "en", "sentiment_connotations": { "anger": null, "happiness": 0.15706565976142883, "love": 0.19101671874523163, "sadness": 0.027795027941465378, "share": null, "fun": 0.06868279725313187 }, "connotation_types": { "positive": 0.36061927676200867, "negative": 0.1687621772289276, "neutral": 0.47064855694770813 }, "text_category": [ 10019, 10167, 10873, 12138, 10872 ], "date_published": null, "content_quality_score": 95, "semantic_location": 95, "rating": null, "group_date": "2021-08-07 07:56:41 +00:00" } }, { "type": "content_analysis_search", "url": "https://reviewfinder.ca/info/top-gaming-racing-wheels/logitech-g29/", "domain": "reviewfinder.ca", "main_domain": "reviewfinder.ca", "url_rank": 79, "spam_score": 0, "domain_rank": 493, "fetch_time": "2022-07-31 20:08:57 +00:00", "country": "CA", "language": "en", "score": 5864.53, "page_category": [ 10108, 10013 ], "page_types": [ "ecommerce" ], "ratings": null, "social_metrics": null, "content_info": { "content_type": "page_content", "title": "Logitech G29 - Recommended and relevant!", "main_title": "Logitech G29 - Reviews, Prices, Specs and Alternatives", "previous_title": "ReviewFinder Gaming Racing Wheels Logitech G29", "level": 2, "author": null, "snippet": "According to the meta ranking published on 3 July 2022, Logitech G29 is currently recommended as a high-quality Racing Wheel. Out of 10 expert opinions queried, Logitech G29 received 4 endorsements, from TechRadar (8 Jun 2022), Android Authority (12 Sep 2021) PCreview (9 Jan 2022) and 1 other..\nNo experts ranked Logitech G29 as 'the best Racing Wheel of July'.\nCompared to other most critically acclaimed Gaming Racing Wheels, Logitech G29 ranks #8 out of 15 in July 2022, - as can be seen from the table below.\nThe definitive SIM racing wheel for PlayStation 4 and PlayStation 3: realistic steering and pedal action for the latest racing titles. Note: Kindly refer the User manual before usage of the product\nBuilt to last: durable solid steel ball bearings, stainless steel shifter and PEDALS and hand-stitched leather wheel grip. Hall-effect steering sensor. Wheel spokes material: Anodized aluminum\nDual-motor force feedback: realistically simulates the racing experience with smooth, quiet Helical gearing. 900° wheel rotation\nSytem requirement:Windows 10, 8.1, Windows 8 or Windows 7 and macOS 10.10+\nWheel Unit Depth is 278 mm; Pedal piston sleeves: Polyoxymethylene thermoplastic (POM)\nAs can be seen from the ranking below, Logitech G29 is endorsed by the critics this months, and ranks #8.", "snippet_length": 1301, "social_metrics": null, "highlighted_text": null, "language": "en", "sentiment_connotations": { "anger": null, "happiness": 0.13903042674064636, "love": 0.14059056341648102, "sadness": 0.09468089044094086, "share": null, "fun": 0.061122357845306396 }, "connotation_types": { "positive": 0.39891257882118225, "negative": 0.30477818846702576, "neutral": 0.2963393032550812 }, "text_category": [ 10013, 10019, 10167 ], "date_published": null, "content_quality_score": 94, "semantic_location": 94, "rating": null, "group_date": "2021-09-13 05:08:30 +00:00" } }, { "type": "content_analysis_search", "url": "https://reviewfinder.ca/top-gaming-keyboards/logitech-g213-vs-razer-cynosa-chroma/", "domain": "reviewfinder.ca", "main_domain": "reviewfinder.ca", "url_rank": 146, "spam_score": 0, "domain_rank": 493, "fetch_time": "2022-08-11 23:21:00 +00:00", "country": "CA", "language": "en", "score": 4562.6978, "page_category": [ 10108, 13691, 10011 ], "page_types": [ "ecommerce" ], "ratings": null, "social_metrics": null, "content_info": { "content_type": "page_content", "title": "Experts prefer Razer Cynosa Chroma over Logitech G213 Prodigy", "main_title": "Comparing Logitech G213 Prodigy and Razer Cynosa Chroma", "previous_title": "Razer Cynosa Chroma", "level": 2, "author": null, "snippet": "Currently, Razer Cynosa Chroma received 1 endorsement from PC Gamer (27 Jul 2022). Meanwhile, Logitech G213 Prodigy did not receive any endorsements this month.\nCurious to see this month's entire Gaming Keyboards ranking? It's here", "snippet_length": 231, "social_metrics": null, "highlighted_text": null, "language": "en", "sentiment_connotations": { "anger": null, "happiness": 0.07467446476221085, "love": 0.18654434382915497, "sadness": 0.14675261080265045, "share": null, "fun": 0.08801265060901642 }, "connotation_types": { "positive": 0.22597165405750275, "negative": 0.5552403926849365, "neutral": 0.21881794929504395 }, "text_category": [ 10108, 13691, 10013 ], "date_published": null, "content_quality_score": 96, "semantic_location": 96, "rating": null, "group_date": "2021-09-08 12:27:37 +00:00" } }, { "type": "content_analysis_search", "url": "https://reviewfinder.ca/info/top-surround-speaker-systems/acoustic-audio-aa5210/", "domain": "reviewfinder.ca", "main_domain": "reviewfinder.ca", "url_rank": 120, "spam_score": 0, "domain_rank": 493, "fetch_time": "2022-08-13 21:56:48 +00:00", "country": "CA", "language": "en", "score": 1411.0455, "page_category": [ 10019, 10167, 10873, 12138, 10872 ], "page_types": [ "ecommerce" ], "ratings": null, "social_metrics": null, "content_info": { "content_type": "page_content", "title": "ReviewFinder Surround Speaker Systems Acoustic Audio AA5210", "main_title": "Acoustic Audio AA5210 - Reviews, Prices, Specs and Alternatives", "previous_title": "Acoustic Audio AA5210 - Reviews, Prices, Specs and Alternatives", "level": 3, "author": null, "snippet": "Acoustic Audio AA5210 powered 5.1 Bluetooth home theater speaker system with USB / SD, 600 watts system power, frequency response is 20hz-20 kHz, magnetically shielded satellite speakers\nIntegrated Bluetooth receiver and amplifier, 5 independent channel inputs and outputs, enhanced bass boost design, bass, treble and main controls, stereo AUX input, pro surround function, USB/SD card reader\nPlug and play connections, LED illuminated sub with multiple pattern flashing light display, 1 subwoofer speaker is (H x W x D) 11\" x 6.25\" x 12.5\", 5 full range satellite speakers are (H x W x D) 6.875\" x 4.125\" x 4\" each\n2 Fronts and 1 center satellite speakers have a 6' single RCA cable, 2 rear speakers have 12' single RCA cables, 3.5mm AUX to RCA cable included, 2 RCA to RCA cables included, remote control and full instructions included\nUse for home entertainment system, laptop or PC, DVD player, gaming, MP3 player, cell phone, tablet or any other device with a 3.5mm headphone output or RCA audio output\nAcoustic Audio AA5210 is a very popular and one of the less expensive options. It's in the top 3 bestselling speaker systems and has a couple of popular alternatives in the same price range, such as Monoprice 5.1 Home Theater or Logitech Z606.\nAcoustic Audio AA5210 is C$383 less expensive than an average speaker system (C$583.42).", "snippet_length": 1341, "social_metrics": null, "highlighted_text": null, "language": "en", "sentiment_connotations": { "anger": null, "happiness": 0.0951547920703888, "love": 0.326175719499588, "sadness": 0.021449072286486626, "share": null, "fun": 0.020081015303730965 }, "connotation_types": { "positive": 0.2667571008205414, "negative": 0.198574036359787, "neutral": 0.5346988439559937 }, "text_category": [ 10019, 10167, 10873, 12138, 12137 ], "date_published": null, "content_quality_score": 93, "semantic_location": 93, "rating": null, "group_date": "2021-08-30 15:38:32 +00:00" } }, { "type": "content_analysis_search", "url": "https://reviewfinder.ca/info/top-gaming-keyboards/logitech-g910/", "domain": "reviewfinder.ca", "main_domain": "reviewfinder.ca", "url_rank": 121, "spam_score": 0, "domain_rank": 493, "fetch_time": "2022-07-21 17:59:12 +00:00", "country": "CA", "language": "en", "score": 5116.254, "page_category": [ 10108, 10013 ], "page_types": [ "ecommerce" ], "ratings": null, "social_metrics": null, "content_info": { "content_type": "page_content", "title": "ReviewFinder Gaming Keyboards Logitech G910", "main_title": "Logitech G910 - Reviews, Prices, Specs and Alternatives", "previous_title": "Logitech G910 - Reviews, Prices, Specs and Alternatives", "level": 3, "author": null, "snippet": "Connectivity Type Wired. Connectivity USB. Bluetooth No. Cord Length or Cordless Range 1.8 m. Ergonomic Design No. Keyboard Language English. Built-in TrackpadTouchpad No. Backlit Keys Yes. Internet Keys 0. Multimedia Keys 5. Mechanical Keys Yes. Custom Programmable Buttons 9 Fully Programmable G Keys. LCD Display No. Number of Memory Profile(s) 3. Colour Black. Wrist Rest Included Yes. Integrated USB Ports 0.\nDesigned For Gaming Yes. Solar Powered No. Battery Life Indicator No. Rechargeable No. System Requirements Windows 788.1 Powered USB Port Internet Connection 100MB Hard Drive Space (for Optional Software Download). Width 50.5 cm. Height 3.5 cm. Depth 24.4 cm. Weight 1.5 kg. Width (Inches) 19.7 in. Height (Inches) 1.37 in. Depth (Inches) 9.52 in. Warranty Parts 2 Year(s).\nLogitech Mechanical Gaming Keyboard.\nLogitech G910 is a very popular and one of the most expensive options. It's in the top 3 bestselling gaming keyboards and has many popular alternatives in the same price range, such as Logitech G810 Orion or Corsair K70 RGB MK.2.\nLogitech G910 is C$86.75 more expensive than an average gaming keyboard (C$104.95).", "snippet_length": 1138, "social_metrics": null, "highlighted_text": null, "language": "en", "sentiment_connotations": { "anger": null, "happiness": 0.09535221010446548, "love": 0.2098393738269806, "sadness": 0.13099771738052368, "share": null, "fun": 0.035219766199588776 }, "connotation_types": { "positive": 0.18018507957458496, "negative": 0.16152001917362213, "neutral": 0.6583248972892761 }, "text_category": [ 10019, 10167, 10013 ], "date_published": null, "content_quality_score": 94, "semantic_location": 94, "rating": null, "group_date": "2021-08-28 00:43:56 +00:00" } }, { "type": "content_analysis_search", "url": "https://reviewfinder.ca/info/top-gaming-keyboards/logitech-g213/", "domain": "reviewfinder.ca", "main_domain": "reviewfinder.ca", "url_rank": 121, "spam_score": 0, "domain_rank": 493, "fetch_time": "2022-07-21 16:59:42 +00:00", "country": "CA", "language": "en", "score": 4598.567, "page_category": [ 10108, 10013 ], "page_types": [ "ecommerce" ], "ratings": null, "social_metrics": null, "content_info": { "content_type": "page_content", "title": "ReviewFinder Gaming Keyboards Logitech G213 Prodigy", "main_title": "Logitech G213 Prodigy - Reviews, Prices, Specs and Alternatives", "previous_title": "Logitech G213 Prodigy - Reviews, Prices, Specs and Alternatives", "level": 3, "author": null, "snippet": "Brilliant color spectrum illumination - personalize five individual lighting zones from a spectrum of over 16.8 million colors. Change colors to match your setup, specific games, or to showcase your favorite colors. Synchronize lighting effects with other Logitech G devices using Logitech gaming software. Low light leak around each keycap means less more light comes through the lettering – and less leaks around the keycaps. This helps make the illumination of each key more brilliant, making it easier to find your keys in the dark\nComfortable and durable - G213 prodigy is a full-sized keyboard designed for gaming and productivity. The slim body is built for gamers of all levels, with a durable construction that repels liquids, crumbs and dirt for easy cleanup. An integrated palm rest and adjustable feet let you set your keyboard to the ideal position, so it’s comfortable to use even during the longest gaming sessions\nPerformance tuned with multi-key input - G213 brings together the best in tactile feel and performance with keys built specifically for the way gamers play. Each key on the G213 is tuned to enhance the tactile experience, delivering ultra-quick, responsive feedback that is up to 4 times faster than standard keyboards. The anti-ghosting gaming Matrix is tuned for optimal gaming performance, keeping you in control when you press multiple gaming keys simultaneously\nDedicated media controls - control your background track without switching out of your game. G213 features dedicated media controls that can be used to play, pause and mute music and videos instantly. Adjust the volume, or skip to the next song with the touch of a button\nCustomize with Logitech gaming software - Logitech gaming software lets you fully customize your G213 for added convenience and personalization. Set the RGB lighting, save time by assigning multiple functions to function (F1-F12) keys, and much more\nLogitech G213 Prodigy is a popular and one of the less expensive options. It's in the top 3 bestselling gaming keyboards and has dozens of popular alternatives in the same price range, such as Corsair K55 RGB or Razer Cynosa V2.\nLogitech G213 Prodigy is C$34.19 less expensive than an average gaming keyboard (C$104.95).", "snippet_length": 2239, "social_metrics": null, "highlighted_text": null, "language": "en", "sentiment_connotations": { "anger": null, "happiness": 0.05594038963317871, "love": 0.4099886119365692, "sadness": 0.037346553057432175, "share": null, "fun": 0.029315805062651634 }, "connotation_types": { "positive": 0.45417067408561707, "negative": 0.13158488273620605, "neutral": 0.4142744541168213 }, "text_category": [ 10019, 10168, 10886, 12222, 10167 ], "date_published": null, "content_quality_score": 94, "semantic_location": 94, "rating": null, "group_date": "2021-08-28 00:43:49 +00:00" } }, { "type": "content_analysis_search", "url": "https://reviewfinder.ca/top-xbox-one-headsets/astro-a10-gaming-headset-vs-lucidsound-ls35x/", "domain": "reviewfinder.ca", "main_domain": "reviewfinder.ca", "url_rank": 165, "spam_score": 0, "domain_rank": 493, "fetch_time": "2022-08-11 00:13:11 +00:00", "country": "CA", "language": "en", "score": 2155.4941, "page_category": [ 10002, 10231, 13469, 10011 ], "page_types": [ "ecommerce" ], "ratings": null, "social_metrics": null, "content_info": { "content_type": "page_content", "title": "Score distribution:", "main_title": "Comparing Astro A10 and LucidSound LS35X", "previous_title": "Expert reviews [1]", "level": 4, "author": null, "snippet": "Durable construction – The A10 was designed to withstand serious abuse, featuring a lightweight yet rugged construction with premium materials for a pressure-free fit that won’t overheat your head. The ear cushions contain cloth for maximum comfort, backed with synthetic leather for the best acoustic performance.\nCombat Ready Precision Audio: Our focus is delivering flawless high quality PC and console audio that delivers total immersion into your game and precision audio to provide a competitive advantage. No one will be able to sneak up behind you with LucidSound on your team.\nNo manufacturer information linked for LucidSound LS35X.\nAstro A10 is a very popular option in the middle of the headsets price range. It's in the top 3 bestselling headsets and has dozens of popular alternatives in the same price range, such as Somic G951S or Logitech G332.\nAstro A10 is C$0.02 more expensive than an average headset (C$59.97).", "snippet_length": 931, "social_metrics": null, "highlighted_text": null, "language": "en", "sentiment_connotations": { "anger": null, "happiness": 0.10993830859661102, "love": 0.1934281885623932, "sadness": 0.039923928678035736, "share": null, "fun": 0.04024559631943703 }, "connotation_types": { "positive": 0.34128379821777344, "negative": 0.259573370218277, "neutral": 0.39917290210723877 }, "text_category": [ 10013, 10019, 10167 ], "date_published": null, "content_quality_score": 94, "semantic_location": 94, "rating": null, "group_date": "2021-09-08 22:26:11 +00:00" } } ] } ] } ]
You can always get more code examples and all the necessary information about Content Analysis API from our comprehensive documentation. If you need integration assistance, don’t hesitate to reach out to our proactive support team available 24/7.
Last but not least, DataForSEO offers Content Analysis API on a pay-as-you-go basis and the pricing is more than affordable. Using this solution, you can perform brand analysis or craft your reputation management software under budget.
To learn a few practical insights about building a custom tool, keep on reading.
What brand management features can be built with Content Analysis API?
The development of sentiment analysis and brand management SaaS tools is becoming increasingly popular. It’s not surprising given that these solutions enable users to find brand mentions and categorize emotions in texts in a matter of a few clicks. Besides that, the pricing of existing software in the market is quite heavy, so many companies and brand experts build custom reporting dashboards.
Before you start developing your tool or dashboard, make sure you have an accurate sentiment analysis system in place. Alternatively, you can opt for a commercial sentiment analysis API that will supply you with all the necessary data right away. In this way, you will not need to pay any maintenance costs.
Here, we will show you how to create several essential brand management and sentiment analysis features using DataForSEO Content Analysis API. While there are a ton more features to explore, we will focus on these five:
- Web Mentions Overview
- Sentiment Polarity Summary
- Sentiment Over Time
- Sentiment Over Time By Category
- Sentiment By Rating
Web Mentions Overview
A quality overview of web mentions gives users all details about the citations of the target keyword they enter. Usually, these details are organized in a view similar to our sketch.
To obtain data for this feature, use Content Analysis API – Search endpoint. The parameters you should use in the body of your POST request are rather intuitive:
- Use
keyword
to define a target keyword - Use
filters
to filter the results by country, polarity (e.g. negative), etc. - Use
order_by
to sort the results in a certain order
Example request:
[ { "keyword": "logitech", "filters": [ "country", "=", "US" ], "order_by": [ "content_info.sentiment_connotations.anger,desc" ], "limit": 5 } ]
The results will contain the snippet of the mention’s text, text category, the URL where the mention was found, domain and URL rank, country, content quality score, sentiment polarity scores, and scored sentiment connotations (anger, happiness, love, sadness, share, fun).
{ "version": "0.1.20220819", "status_code": 20000, "status_message": "Ok.", "time": "3.8156 sec.", "cost": 0.02015, "tasks_count": 1, "tasks_error": 0, "tasks": [ { "id": "12071626-1535-0463-0000-e05969663d47", "status_code": 20000, "status_message": "Ok.", "time": "3.7991 sec.", "cost": 0.02015, "result_count": 1, "path": [ "v3", "content_analysis", "search", "live" ], "data": { "api": "content_analysis", "function": "search", "keyword": "logitech", "filters": [ "country", "=", "US" ], "order_by": [ "content_info.sentiment_connotations.anger,desc" ], "limit": 5 }, "result": [ { "offset_token": "eyJDdXJyZW50T2Zmc2V0Ijo1LCJSYXdSZXF1ZXN0Ijp7ImtleXdvcmQiOiJsb2dpdGVjaCIsInF1ZXJ5Ijp7ImZpZWxkIjoiY291bnRyeSIsInR5cGUiOiJlcSIsInZhbHVlIjoiVVMifSwib3JkZXJfYnkiOnsib3JkZXJfZmllbGQiOiJjb250ZW50X2luZm8uc2VudGltZW50X2Nvbm5vdGF0aW9ucy5hbmdlciIsIm9yZGVyX3R5cGUiOiJkZXNjIn0sImxpbWl0Ijo1LCJhaWQiOjE1MzV9LCJTZWFyY2hBZnRlckRhdGEiOnsiVmVyc2lvbiI6MSwiU2VhcmNoQWZ0ZXJWYWx1ZXMiOnsiY29udGVudHMuc2VudGltZW50X2Nvbm5vdGF0aW9ucy5hbmdlciI6MC41Mjk1NzY5NiwiX3Njb3JlIjo1NTgyLjI5NiwidXJsX2hhc2giOiI1Mzk1OTc4NDgyMDEyNDkwNDU5In0sIlRva2VuUmVhbE9mZnNldCI6MH19", "total_count": 572063, "items_count": 5, "items": [ { "type": "content_analysis_search", "url": "https://steamboatspringsluxuryhomes.com/govdb-588168-Kanu-Paddel-Push-Feder-Clips/", "domain": "steamboatspringsluxuryhomes.com", "main_domain": "steamboatspringsluxuryhomes.com", "url_rank": 0, "spam_score": 0, "domain_rank": 181, "fetch_time": "2022-09-21 13:02:26 +00:00", "country": "US", "language": "de", "score": 6306.804, "page_category": [ 10014, 13605, 13618, 10009, 10404 ], "page_types": [ "cms", "blogs" ], "ratings": null, "social_metrics": null, "content_info": { "content_type": "comment", "title": null, "main_title": null, "previous_title": null, "level": 0, "author": null, "snippet": "1 System von Teufel/Logitech etc. Das wollte ich dann auch nicht. ", "snippet_length": 66, "social_metrics": null, "highlighted_text": null, "language": "de", "sentiment_connotations": { "anger": 0.5765729546546936, "happiness": 0.04464385658502579, "love": null, "sadness": 0.20320411026477814, "share": 0.12103315442800522, "fun": 0.050858959555625916 }, "connotation_types": { "positive": 0, "negative": 0.9411442279815674, "neutral": 0 }, "text_category": [ 10001, 10026, 10209, 10994, 12270 ], "date_published": "2022-08-21 21:00:00 +00:00", "content_quality_score": 100, "semantic_location": null, "rating": null, "group_date": "2022-08-21 21:00:00 +00:00" } }, { "type": "content_analysis_search", "url": "http://azpremium.monster/xqiohcmf-708742-60x40x26cm-Transportbox-Flightcase-Koffercase-Box/", "domain": "azpremium.monster", "main_domain": "azpremium.monster", "url_rank": 0, "spam_score": 0, "domain_rank": 182, "fetch_time": "2022-09-23 13:06:19 +00:00", "country": "US", "language": "de", "score": 5995.022, "page_category": [ 10013, 10021, 10178, 10937, 12263 ], "page_types": [ "cms", "blogs" ], "ratings": null, "social_metrics": null, "content_info": { "content_type": "comment", "title": null, "main_title": null, "previous_title": null, "level": 0, "author": null, "snippet": "Bei Logitech wird das Batteriefach \"geschoben\". Wenn man Apps runter lädt die nicht so funktionieren, muß man die Werkseinstellung betätigen. ", "snippet_length": 142, "social_metrics": null, "highlighted_text": null, "language": "de", "sentiment_connotations": { "anger": 0.5452792644500732, "happiness": 0.07148043811321259, "love": null, "sadness": 0.14249087870121002, "share": 0.10865204781293869, "fun": 0.12447550892829895 }, "connotation_types": { "positive": 0, "negative": 0.5001452565193176, "neutral": 0 }, "text_category": [ 10019, 10167, 10007, 13418 ], "date_published": "2022-06-17 21:00:00 +00:00", "content_quality_score": 93, "semantic_location": null, "rating": null, "group_date": "2022-06-17 21:00:00 +00:00" } }, { "type": "content_analysis_search", "url": "http://azpremium.monster/dworzfkx-708742-PRO-x40x26cm-Transportbox-Flightcase-Koffercase/", "domain": "azpremium.monster", "main_domain": "azpremium.monster", "url_rank": 0, "spam_score": 0, "domain_rank": 182, "fetch_time": "2022-10-01 16:12:36 +00:00", "country": "US", "language": "de", "score": 5989.8984, "page_category": [ 10013, 10021, 10178, 10937, 12263 ], "page_types": [ "cms", "blogs" ], "ratings": null, "social_metrics": null, "content_info": { "content_type": "comment", "title": null, "main_title": null, "previous_title": null, "level": 0, "author": null, "snippet": "Bei Logitech wird das Batteriefach \"geschoben\". Wenn man Apps runter lädt die nicht so funktionieren, muß man die Werkseinstellung betätigen. ", "snippet_length": 142, "social_metrics": null, "highlighted_text": null, "language": "de", "sentiment_connotations": { "anger": 0.5452792644500732, "happiness": 0.07148043811321259, "love": null, "sadness": 0.14249087870121002, "share": 0.10865204781293869, "fun": 0.12447550892829895 }, "connotation_types": { "positive": 0, "negative": 0.5001452565193176, "neutral": 0 }, "text_category": [ 10019, 10167, 10007, 13418 ], "date_published": "2022-06-17 21:00:00 +00:00", "content_quality_score": 93, "semantic_location": null, "rating": null, "group_date": "2022-06-17 21:00:00 +00:00" } }, { "type": "content_analysis_search", "url": "http://azpremium.monster/qtcie-708742-Case-TOUR-PRO-x40x26cm-Transportbox/", "domain": "azpremium.monster", "main_domain": "azpremium.monster", "url_rank": 0, "spam_score": 0, "domain_rank": 182, "fetch_time": "2022-09-25 01:12:11 +00:00", "country": "US", "language": "de", "score": 5989.555, "page_category": [ 10013, 10021, 10178, 10937, 12263 ], "page_types": [ "cms", "blogs" ], "ratings": null, "social_metrics": null, "content_info": { "content_type": "comment", "title": null, "main_title": null, "previous_title": null, "level": 0, "author": null, "snippet": "Bei Logitech wird das Batteriefach \"geschoben\". Wenn man Apps runter lädt die nicht so funktionieren, muß man die Werkseinstellung betätigen. ", "snippet_length": 142, "social_metrics": null, "highlighted_text": null, "language": "de", "sentiment_connotations": { "anger": 0.5452792644500732, "happiness": 0.07148043811321259, "love": null, "sadness": 0.14249087870121002, "share": 0.10865204781293869, "fun": 0.12447550892829895 }, "connotation_types": { "positive": 0, "negative": 0.5001452565193176, "neutral": 0 }, "text_category": [ 10019, 10167, 10007, 13418 ], "date_published": "2022-06-17 21:00:00 +00:00", "content_quality_score": 93, "semantic_location": null, "rating": null, "group_date": "2022-06-17 21:00:00 +00:00" } }, { "type": "content_analysis_search", "url": "https://chuckrosco.com/tyqvhpk-172323-Unterwassersport-Diver-Cylinder-Symbol/", "domain": "chuckrosco.com", "main_domain": "chuckrosco.com", "url_rank": 0, "spam_score": 0, "domain_rank": 103, "fetch_time": "2022-09-14 14:27:04 +00:00", "country": "US", "language": "de", "score": 5582.296, "page_category": [ 10002, 10028, 10222, 13813, 10017, 10145, 13582 ], "page_types": [ "cms", "blogs" ], "ratings": null, "social_metrics": null, "content_info": { "content_type": "comment", "title": null, "main_title": null, "previous_title": null, "level": 0, "author": null, "snippet": "Es hat aber kein Zweck mit Logitech. Leider enthielt das Paket nicht den wie auf den Fotis gezeigten Inhalt. ", "snippet_length": 109, "social_metrics": null, "highlighted_text": null, "language": "de", "sentiment_connotations": { "anger": 0.5295769572257996, "happiness": 0.059367917478084564, "love": 0.021694591268897057, "sadness": 0.2476615160703659, "share": 0.0666995719075203, "fun": 0.07505948096513748 }, "connotation_types": { "positive": 0, "negative": 0.5709952116012573, "neutral": 0 }, "text_category": [ 10007, 13418, 10019, 10168, 10885, 12197, 12211 ], "date_published": "2022-04-28 21:00:00 +00:00", "content_quality_score": 96, "semantic_location": null, "rating": null, "group_date": "2022-04-28 21:00:00 +00:00" } } ] } ] } ] }
Sentiment Polarity Summary
You can implement this feature by using data from the Content Analysis API – Summary endpoint.
Simply indicate the necessary keyword in the request’s body and call the following URL:
[ { "keyword": "logitech", "internal_list_limit": 3 } ]
In the response from our API, you will get a comprehensive summary of the target keyword citations, including the overall sentiment distribution by polarity and sentiment connotations, which you’ll need to build this chart.
{
"version": "0.1.20220819",
"status_code": 20000,
"status_message": "Ok.",
"time": "27.8313 sec.",
"cost": 0.02003,
"tasks_count": 1,
"tasks_error": 0,
"tasks": [
{
"id": "12071629-1535-0464-0000-cde4eec4abc8",
"status_code": 20000,
"status_message": "Ok.",
"time": "27.7746 sec.",
"cost": 0.02003,
"result_count": 1,
"path": [
"v3",
"content_analysis",
"summary",
"live"
],
"data": {
"api": "content_analysis",
"function": "summary",
"keyword": "logitech",
"internal_list_limit": 3
},
"result": [
{
"type": "content_analysis_summary",
"total_count": 7015815,
"rank": 670,
"top_domains": [
{
"domain": "vdsitsolutions.com",
"count": 477186
},
{
"domain": "nerdpart.com",
"count": 110630
},
{
"domain": "golem.de",
"count": 84183
}
],
"sentiment_connotations": {
"anger": 252,
"happiness": 240991,
"love": 15011,
"sadness": 1306,
"share": 216903,
"fun": 9136
},
"connotation_types": {
"positive": 2556359,
"negative": 1418437,
"neutral": 2561607
},
"text_categories": [
{
"category": null,
"count": 882150
},
{
"category": [
10019,
10167,
10168,
10883,
12184,
10007,
11506,
12168
],
"count": 434695
},
{
"category": [
10013,
10019,
10167
],
"count": 231974
}
],
"page_categories": [
{
"category": null,
"count": 1626485
},
{
"category": [
10014,
10114,
10108
],
"count": 54662
},
{
"category": [
10108,
13647,
10013,
10105,
13536,
10566,
13897,
13700
],
"count": 49272
}
],
"page_types": {
"blogs": 3633757,
"organization": null,
"news": 902240,
"message-boards": null,
"ecommerce": null
},
"countries": {
"US": 572069,
"BE": 501146,
"WW": 361893
},
"languages": {
"en": 3933933,
"de": 578841,
"es": 520595
}
}
]
}
]
}
Sentiment Over Time
By plotting sentiment polarity distribution over a timeline, you can help users see when their brand reputation started deteriorating or improving.
Filling this line graph with data is pretty straightforward. You’ll need to call the Phrase Trends endpoint of Content Analysis API and indicate the desired keyword, date range, and time range which will be used to group the results (by day, week, or month).
Example request:
[ { "keyword": "logitech", "search_mode": "as_is", "date_from": "2022-09-01", "date_group": "month" } ]
The results you will get in the response will contain the requested stats for web mentions. The stats will be grouped by a certain date
. You’ll need to use data on the number of mentions from the sentiment_connotations
and/or connotation_types
objects and relevant dates to build the Sentiment Over Time feature.
{ "version": "0.1.20220819", "status_code": 20000, "status_message": "Ok.", "time": "26.5216 sec.", "cost": 0.02012, "tasks_count": 1, "tasks_error": 0, "tasks": [ { "id": "12071631-1535-0467-0000-d6316686f312", "status_code": 20000, "status_message": "Ok.", "time": "26.4874 sec.", "cost": 0.02012, "result_count": 4, "path": [ "v3", "content_analysis", "phrase_trends", "live" ], "data": { "api": "content_analysis", "function": "phrase_trends", "keyword": "logitech", "search_mode": "as_is", "date_from": "2022-09-01", "date_group": "month" }, "result": [ { "type": "content_analysis_trends", "date": "2022-09-01", "total_count": 1158235, "rank": 591, "top_domains": [ { "domain": "xsplit.com", "count": 53678 }, { "domain": "englishsteps.net", "count": 26359 }, { "domain": "wireless1.com.au", "count": 13596 }, { "domain": "16bars.de", "count": 8083 }, { "domain": "seattlestreetcar.org", "count": 5923 }, { "domain": "dutchcreativeindustry.com", "count": 5891 }, { "domain": "bcoolmagazin.hu", "count": 5658 }, { "domain": "reviewsguide.org", "count": 4078 }, { "domain": "urank.ru", "count": 3912 }, { "domain": "vmarchese.com", "count": 3664 } ], "sentiment_connotations": { "anger": 34, "happiness": 31881, "love": 4984, "sadness": 294, "share": 28759, "fun": 1232 }, "connotation_types": { "positive": 393263, "negative": 140049, "neutral": 582267 }, "text_categories": [ { "category": null, "count": 136623 }, { "category": [ 10013, 10019, 10167 ], "count": 109298 }, { "category": [ 10019, 10167, 10007, 13418 ], "count": 54236 }, { "category": [ 10013, 10108, 13691 ], "count": 46391 }, { "category": [ 10019, 10167, 10013 ], "count": 42075 }, { "category": [ 10013, 10004 ], "count": 28251 }, { "category": [ 10013, 10108 ], "count": 27161 }, { "category": [ 10108, 13691, 10013, 10103, 10556 ], "count": 21553 }, { "category": [ 10013, 10108, 10584 ], "count": 20303 }, { "category": [ 10108, 13691, 10013 ], "count": 15432 } ], "page_categories": [ { "category": null, "count": 289714 }, { "category": [ 10014, 10114, 10108 ], "count": 54251 }, { "category": [ 10013, 10108, 10584 ], "count": 24040 }, { "category": [ 10108, 10584, 10013 ], "count": 11166 }, { "category": [ 10013, 10019, 10167 ], "count": 11020 }, { "category": [ 10019, 10167, 10013 ], "count": 8605 }, { "category": [ 10013, 10108 ], "count": 7123 }, { "category": [ 10108, 10013 ], "count": 6260 }, { "category": [ 10013, 10021, 10176, 13779 ], "count": 6067 }, { "category": [ 10108, 10584 ], "count": 5537 } ], "page_types": { "blogs": 621779, "organization": 116364, "news": 229180, "message-boards": 18687, "ecommerce": 95477 }, "countries": { "US": 86019, "WW": 51991, "DE": 30787, "IN": 22177, "VN": 20174, "AU": 19394, "BR": 17396, "JP": 16820, "GB": 16712, "ES": 15405 }, "languages": { "en": 717346, "ja": 114164, "de": 66904, "es": 61454, "fr": 53267, "it": 28254, "vi": 23800, "ru": 16355, "pt": 6942, "hu": 6421 } }, { "type": "content_analysis_trends", "date": "2022-10-01", "total_count": 1441611, "rank": 559, "top_domains": [ { "domain": "vdsitsolutions.com", "count": 343213 }, { "domain": "dutchcreativeindustry.com", "count": 34616 }, { "domain": "wireless1.com.au", "count": 25600 }, { "domain": "edenred.mx", "count": 8344 }, { "domain": "richardcastle.net", "count": 7877 }, { "domain": "private-sextreffen.cc", "count": 7765 }, { "domain": "parkkitchen.com", "count": 7405 }, { "domain": "16bars.de", "count": 7337 }, { "domain": "x-kom.pl", "count": 6960 }, { "domain": "kreativdesign1.de", "count": 6131 } ], "sentiment_connotations": { "anger": 16, "happiness": 34723, "love": 4093, "sadness": 216, "share": 52523, "fun": 1085 }, "connotation_types": { "positive": 739837, "negative": 182379, "neutral": 465406 }, "text_categories": [ { "category": [ 10019, 10167, 10168, 10883, 12184, 10007, 11506, 12168 ], "count": 300722 }, { "category": null, "count": 122120 }, { "category": [ 10019, 10167, 10872, 10007, 11506, 12168 ], "count": 32536 }, { "category": [ 10001, 10024, 10185, 10952, 13573 ], "count": 31464 }, { "category": [ 10013, 10019, 10167, 10108, 13691 ], "count": 23234 }, { "category": [ 10013, 10108, 13691 ], "count": 22163 }, { "category": [ 10013, 10019, 10167 ], "count": 21622 }, { "category": [ 10019, 10168, 10886, 12222, 12216, 10108 ], "count": 19758 }, { "category": [ 10108, 10001, 13655, 13656, 10016, 10139, 10746 ], "count": 19439 }, { "category": [ 10019, 10167, 10013, 10007, 13418 ], "count": 17459 } ], "page_categories": [ { "category": null, "count": 212379 }, { "category": [ 10108, 13647, 10013, 10105, 13536, 10566, 13897, 13700 ], "count": 24725 }, { "category": [ 10013, 10108, 10584 ], "count": 18013 }, { "category": [ 10108, 10584, 10013 ], "count": 8751 }, { "category": [ 10009, 10404, 10004, 13804 ], "count": 8299 }, { "category": [ 10108, 13647, 13700 ], "count": 7705 }, { "category": [ 10013, 10019, 10167 ], "count": 6527 }, { "category": [ 10009, 10404, 10019, 10167, 10017, 10142, 10769, 12067 ], "count": 6213 }, { "category": [ 10019, 10167, 10013 ], "count": 5815 }, { "category": [ 10108, 13691, 10013, 10103, 10556 ], "count": 5736 } ], "page_types": { "blogs": 818751, "organization": 48478, "news": 259647, "message-boards": 27175, "ecommerce": 135568 }, "countries": { "BE": 346397, "US": 89409, "WW": 69880, "DE": 43601, "AU": 32822, "VN": 24850, "PL": 20789, "IN": 20436, "BR": 19618, "MX": 15238 }, "languages": { "en": 972877, "ja": 113751, "de": 86149, "es": 81779, "fr": 54056, "vi": 33618, "it": 26839, "pl": 9580, "nb": 6805, "nl": 6626 } }, { "type": "content_analysis_trends", "date": "2022-11-01", "total_count": 495032, "rank": 533, "top_domains": [ { "domain": "vdsitsolutions.com", "count": 131383 }, { "domain": "maistecnologia.com", "count": 13377 }, { "domain": "wireless1.com.au", "count": 11150 }, { "domain": "dutchcreativeindustry.com", "count": 4730 }, { "domain": "000webhostapp.com", "count": 4560 }, { "domain": "edenred.mx", "count": 3417 }, { "domain": "16bars.de", "count": 2124 }, { "domain": "x-kom.pl", "count": 2020 }, { "domain": "chancameras.com", "count": 1912 }, { "domain": "color-management-guide.com", "count": 1673 } ], "sentiment_connotations": { "anger": 6, "happiness": 18024, "love": 1051, "sadness": 46, "share": 11313, "fun": 1580 }, "connotation_types": { "positive": 252987, "negative": 90604, "neutral": 126192 }, "text_categories": [ { "category": [ 10019, 10167, 10168, 10883, 12184, 10007, 11506, 12168 ], "count": 131383 }, { "category": null, "count": 46144 }, { "category": [ 10013, 10004, 10007, 13418 ], "count": 16999 }, { "category": [ 10019, 10167, 10013, 10108, 13691 ], "count": 10102 }, { "category": [ 10019, 10167, 10872, 10013 ], "count": 9411 }, { "category": [ 10019, 10167, 10013, 10007, 13418 ], "count": 7611 }, { "category": [ 10013, 10019, 10167, 10108, 13691 ], "count": 7245 }, { "category": [ 10013, 10108, 13691 ], "count": 6500 }, { "category": [ 10108, 13691, 10013, 10103, 10556 ], "count": 5547 }, { "category": [ 10019, 10167, 10007, 13418, 10013 ], "count": 5469 } ], "page_categories": [ { "category": null, "count": 103329 }, { "category": [ 10108, 13647, 10013, 10105, 13536, 10566, 13897, 13700 ], "count": 4730 }, { "category": [ 10013, 10108, 10584 ], "count": 2597 }, { "category": [ 10009, 10404, 10004, 13804 ], "count": 2144 }, { "category": [ 10009, 10404, 10019, 10167, 10017, 10142, 10769, 12067 ], "count": 2118 }, { "category": [ 10108, 13691, 10013, 10103, 10556 ], "count": 2019 }, { "category": [ 10019, 10167, 10007, 10878, 13381, 12161, 13054 ], "count": 1780 }, { "category": [ 10019, 10167, 10013, 10007, 13418 ], "count": 1709 }, { "category": [ 10108, 10756, 10013 ], "count": 1644 }, { "category": [ 10019, 10168, 10883, 12187, 13069, 13068 ], "count": 1359 } ], "page_types": { "blogs": 291558, "organization": 32931, "news": 68118, "message-boards": 10798, "ecommerce": 52311 }, "countries": { "BE": 132909, "WW": 30916, "US": 22747, "AU": 13392, "DE": 7828, "IN": 7488, "BR": 6488, "FR": 6296, "VN": 5267, "PL": 5150 }, "languages": { "en": 320634, "es": 32611, "pt": 25152, "ja": 24984, "de": 19540, "fr": 17186, "vi": 16814, "it": 6883, "pl": 4555, "nb": 4343 } }, { "type": "content_analysis_trends", "date": "2022-12-01", "total_count": 13808, "rank": 402, "top_domains": [ { "domain": "vdsitsolutions.com", "count": 2596 }, { "domain": "1clickwriters.com", "count": 296 }, { "domain": "auto-manic.in", "count": 232 }, { "domain": "enter.shop", "count": 231 }, { "domain": "moneymoviesports.com", "count": 127 }, { "domain": "laptoptekoop.nl", "count": 107 }, { "domain": "elcw.ca", "count": 103 }, { "domain": "lgfonline.fr", "count": 88 }, { "domain": "englishsteps.net", "count": 80 }, { "domain": "coachoutlet-canada.ca", "count": 69 } ], "sentiment_connotations": { "anger": 2, "happiness": 671, "love": 28, "sadness": 1, "share": 282, "fun": 7 }, "connotation_types": { "positive": 5903, "negative": 2602, "neutral": 4389 }, "text_categories": [ { "category": [ 10019, 10167, 10168, 10883, 12184, 10007, 11506, 12168 ], "count": 2596 }, { "category": null, "count": 1090 }, { "category": [ 10013, 10108, 13691 ], "count": 352 }, { "category": [ 10013, 10019, 10167, 10108, 13691 ], "count": 338 }, { "category": [ 10013, 10108, 13691, 10019, 10167 ], "count": 332 }, { "category": [ 10019, 10167, 10013, 10108, 13691 ], "count": 309 }, { "category": [ 10019, 10167 ], "count": 262 }, { "category": [ 10108, 13691, 10013, 10103, 10556 ], "count": 221 }, { "category": [ 10019, 10167, 10013, 10108 ], "count": 201 }, { "category": [ 10019, 10167, 10013, 10007, 13418 ], "count": 152 } ], "page_categories": [ { "category": null, "count": 4849 }, { "category": [ 10019, 10168, 10886, 12222, 12216 ], "count": 84 }, { "category": [ 10019, 10168, 10886, 12216, 12222 ], "count": 55 }, { "category": [ 10009, 10404, 10004, 13804 ], "count": 30 }, { "category": [ 10019, 10167, 10013, 10007, 13418 ], "count": 26 }, { "category": [ 10013, 10108, 13691 ], "count": 24 }, { "category": [ 10108, 13691, 10013, 10103, 10556 ], "count": 24 }, { "category": [ 10013, 10108, 10584 ], "count": 23 }, { "category": [ 10019, 10167, 10007, 10878, 13381, 12161, 13054 ], "count": 23 }, { "category": [ 10013, 10019, 10167, 10108, 13691 ], "count": 22 } ], "page_types": { "blogs": 8761, "organization": 2017, "news": 722, "message-boards": 292, "ecommerce": 1240 }, "countries": { "BE": 2608, "US": 655, "IN": 439, "NL": 416, "WW": 320, "CA": 264, "DE": 252, "BR": 208, "FR": 173, "GB": 160 }, "languages": { "en": 9472, "de": 730, "es": 707, "nl": 572, "fr": 419, "nb": 308, "ja": 283, "it": 218, "vi": 199, "pl": 135 } } ] } ] }
Sentiment Over Time By Category
Similarly to the feature above, this visualization will plot the sentiment polarity over time, but it will provide a broader view by categories.
Unlike the previous feature, this line graph will come in handy for larger research purposes, such as investigating market trends.
To implement this view, you’ll need to call the Category Trends endpoint and define the necessary category, date range, and time range for grouping (by day, week, or month).
For each category section, make a new API call with the relevant category code.
You can obtain the full list of available category codes and review category names by using the free Categories endpoint.
Here are example requests to obtain trends data for two categories:
[ { "category_code": 10994, "search_mode": "as_is", "date_from": "2022-09-01", "date_group": "month" } ]
[ { "category_code": 10937, "search_mode": "as_is", "date_from": "2022-09-01", "date_group": "month" } ]
Once you receive the results in the response, you should utilize data from the sentiment_connotations
and/or connotation_types
objects along with relevant dates to create this graph. To indicate the name of the relevant category, you can use data from the free Categories endpoint.
{ "version": "0.1.20220819", "status_code": 20000, "status_message": "Ok.", "time": "26.0527 sec.", "cost": 0.02012, "tasks_count": 1, "tasks_error": 0, "tasks": [ { "id": "12071632-1535-0468-0000-3b4e566937e8", "status_code": 20000, "status_message": "Ok.", "time": "25.9955 sec.", "cost": 0.02012, "result_count": 4, "path": [ "v3", "content_analysis", "category_trends", "live" ], "data": { "api": "content_analysis", "function": "category_trends", "category_code": 10994, "search_mode": "as_is", "date_from": "2022-09-01", "date_group": "month" }, "result": [ { "type": "content_analysis_trends", "date": "2022-09-01", "total_count": 12935348, "rank": 631, "top_domains": [ { "domain": "doctahx.com", "count": 223907 }, { "domain": "easybom.com", "count": 194966 }, { "domain": "andrewbartos.com", "count": 183960 }, { "domain": "nzbattery.co.nz", "count": 172336 }, { "domain": "restaurantelasredes.com", "count": 164366 }, { "domain": "irelandbattery.com", "count": 159411 }, { "domain": "mtuc.org.my", "count": 144134 }, { "domain": "headhealth.io", "count": 139135 }, { "domain": "selman-shop.de", "count": 136799 }, { "domain": "cmsnl.com", "count": 132686 } ], "sentiment_connotations": { "anger": 9647, "happiness": 1064934, "love": 96091, "sadness": 30951, "share": 301199, "fun": 97146 }, "connotation_types": { "positive": 4085638, "negative": 2659085, "neutral": 7047699 }, "text_categories": [ { "category": [ 10016, 10141, 10763, 10001, 10026, 10209, 10994, 12271, 10004, 10305, 11103, 12400 ], "count": 1180733 }, { "category": [ 10019, 10167, 10872, 13402, 10001, 10026, 10209, 10994, 12272, 13131 ], "count": 847206 }, { "category": [ 10001, 10026, 10209, 10994 ], "count": 525429 }, { "category": [ 10001, 10026, 10209, 10994, 10024, 10185 ], "count": 368228 }, { "category": [ 10009, 10404, 10001, 10026, 10209, 10994 ], "count": 320972 }, { "category": [ 10001, 10024, 10185, 10026, 10209, 10994 ], "count": 315070 }, { "category": [ 10001, 10026, 10209, 10994, 12272, 13131, 10019, 10167, 10872, 13402 ], "count": 219093 }, { "category": [ 10001, 10026, 10209, 10994, 10013, 10111, 11886 ], "count": 185966 }, { "category": [ 10001, 10026, 10209, 10994, 12270, 10010, 10081 ], "count": 181926 }, { "category": [ 10004, 13804, 10001, 10026, 10209, 10994 ], "count": 180508 } ], "page_categories": [ { "category": null, "count": 1424175 }, { "category": [ 10001, 13655, 13656, 10024, 13714 ], "count": 98159 }, { "category": [ 10001, 10026, 10209, 10994 ], "count": 95411 }, { "category": [ 10019, 10168, 10883, 12187, 10886, 13815 ], "count": 87135 }, { "category": [ 10001, 13655, 13656, 10024, 10185 ], "count": 82236 }, { "category": [ 10004, 13464, 10302, 11359, 12699 ], "count": 79930 }, { "category": [ 10004, 13464, 10302, 11359, 12699, 12697 ], "count": 64419 }, { "category": [ 10001, 10026, 10209, 10994, 10024, 10185 ], "count": 63600 }, { "category": [ 10019, 10168, 10886, 13815, 10883, 12187 ], "count": 55329 }, { "category": [ 10001, 10024, 10185, 13655, 13656 ], "count": 54781 } ], "page_types": { "blogs": 6008552, "organization": 654605, "news": 376637, "message-boards": 338197, "ecommerce": 3422564 }, "countries": { "US": 1840540, "WW": 625760, "ES": 490202, "DE": 429524, "GB": 389936, "BR": 267733, "NZ": 262508, "IN": 243426, "CY": 213343, "MY": 165573 }, "languages": { "en": 9574174, "de": 893172, "ru": 757996, "es": 711091, "ja": 290565, "fr": 205322, "pt": 129692, "ro": 84943, "tr": 43870, "it": 30894 } }, { "type": "content_analysis_trends", "date": "2022-10-01", "total_count": 20967139, "rank": 632, "top_domains": [ { "domain": "cdcati.net", "count": 348581 }, { "domain": "doctahx.com", "count": 338224 }, { "domain": "restaurantelasredes.com", "count": 335695 }, { "domain": "magicalcosmetic.com", "count": 311446 }, { "domain": "headhealth.io", "count": 296812 }, { "domain": "gilgalreward.org", "count": 296562 }, { "domain": "carpassus.com", "count": 294701 }, { "domain": "kokten.com.tr", "count": 280248 }, { "domain": "ambazarbd.com", "count": 277050 }, { "domain": "tentegypt.com", "count": 276363 } ], "sentiment_connotations": { "anger": 7519, "happiness": 1677593, "love": 80341, "sadness": 20998, "share": 243338, "fun": 100327 }, "connotation_types": { "positive": 5050517, "negative": 2489684, "neutral": 13170268 }, "text_categories": [ { "category": [ 10016, 10141, 10763, 10001, 10026, 10209, 10994, 12271, 10004, 10305, 11103, 12400 ], "count": 6933127 }, { "category": [ 10001, 10026, 10209, 10994, 10024, 10185 ], "count": 729105 }, { "category": [ 10001, 10026, 10209, 10994, 12273, 10011, 10085, 10446, 12849 ], "count": 296231 }, { "category": [ 10001, 10026, 10209, 10994 ], "count": 287839 }, { "category": [ 10016, 10141, 10763, 10001, 10026, 10209, 10994, 12271 ], "count": 267729 }, { "category": [ 10001, 10024, 10185, 10026, 10209, 10994 ], "count": 247366 }, { "category": [ 10001, 10026, 10209, 10994, 10108, 10024, 10185 ], "count": 195846 }, { "category": [ 10001, 13655, 13656, 10026, 10209, 10994, 10024, 10185 ], "count": 195705 }, { "category": [ 10001, 10026, 10209, 10994, 10024, 10185, 13655, 13656 ], "count": 173323 }, { "category": [ 10001, 10026, 10209, 10994, 12275, 10193, 10967 ], "count": 171742 } ], "page_categories": [ { "category": null, "count": 1340492 }, { "category": [ 10001, 10026, 10209, 10994, 10024, 10185, 13655, 13656 ], "count": 169963 }, { "category": [ 10001, 10026, 10209, 10994, 10024, 10185 ], "count": 121050 }, { "category": [ 10001, 10026, 10209, 10994 ], "count": 88915 }, { "category": [ 10001, 10024, 10185, 13655, 13656, 13714 ], "count": 86553 }, { "category": [ 10108, 13691, 10013, 10103, 10556 ], "count": 85691 }, { "category": [ 10009, 10404, 10004, 13804 ], "count": 81542 }, { "category": [ 10001, 10026, 10209, 10024, 10185 ], "count": 75956 }, { "category": [ 10001, 10026, 10209, 10994, 12275, 10193, 10967 ], "count": 62759 }, { "category": [ 10001, 13655, 13656, 10024, 10185, 13714 ], "count": 51597 } ], "page_types": { "blogs": 12777325, "organization": 1070596, "news": 345074, "message-boards": 468434, "ecommerce": 3586665 }, "countries": { "US": 2025795, "DE": 803880, "WW": 757672, "ES": 535258, "BR": 524141, "IT": 520060, "RO": 413006, "UA": 329757, "TR": 327485, "GB": 326554 }, "languages": { "en": 16174361, "ru": 1428047, "de": 802863, "ro": 786154, "es": 652249, "ja": 310138, "fr": 305156, "it": 133044, "pt": 132524, "tl": 69684 } }, { "type": "content_analysis_trends", "date": "2022-11-01", "total_count": 8746006, "rank": 645, "top_domains": [ { "domain": "ayambakarpakd.com", "count": 217760 }, { "domain": "ccjdetectives.com", "count": 206477 }, { "domain": "jeddahshore.com", "count": 187127 }, { "domain": "homepageman.de", "count": 179100 }, { "domain": "dshealingcircles.com", "count": 175978 }, { "domain": "osalfaiates.pt", "count": 172908 }, { "domain": "carpassus.com", "count": 161939 }, { "domain": "bvhmch.com", "count": 158867 }, { "domain": "callzone.pt", "count": 153888 }, { "domain": "piese-ford.ro", "count": 152148 } ], "sentiment_connotations": { "anger": 3273, "happiness": 303841, "love": 43306, "sadness": 8144, "share": 102139, "fun": 20797 }, "connotation_types": { "positive": 1466799, "negative": 1118304, "neutral": 6011614 }, "text_categories": [ { "category": [ 10016, 10141, 10763, 10001, 10026, 10209, 10994, 12271, 10004, 10305, 11103, 12400 ], "count": 3524722 }, { "category": [ 10001, 10026, 10209, 10994, 10024, 10185 ], "count": 256351 }, { "category": [ 10001, 10026, 10209, 10994, 10024, 10185, 13655, 13656 ], "count": 148827 }, { "category": [ 10001, 10026, 10209, 10024, 10185, 10994 ], "count": 88295 }, { "category": [ 10001, 10026, 10209, 10994 ], "count": 85413 }, { "category": [ 10003, 10040, 10001, 10026, 10209, 10994, 10017, 10142, 10769, 12067 ], "count": 64933 }, { "category": [ 10001, 10026, 10209, 10994, 10108, 10024, 10185 ], "count": 61561 }, { "category": [ 10108, 13691, 10001, 10026, 10209, 10994 ], "count": 61369 }, { "category": [ 10001, 10026, 10209, 11000, 10994 ], "count": 60694 }, { "category": [ 10001, 10026, 10209, 10994, 13655, 13656, 10024, 10185 ], "count": 49198 } ], "page_categories": [ { "category": null, "count": 801865 }, { "category": [ 10001, 13655, 13656, 10024, 13714, 10185 ], "count": 78309 }, { "category": [ 10001, 13655, 13656, 10024, 10185, 13714 ], "count": 68271 }, { "category": [ 10001, 10026, 10209, 10994 ], "count": 60202 }, { "category": [ 10001, 10026, 10209, 10994, 10024, 10185, 13655, 13656 ], "count": 57208 }, { "category": [ 10001, 10024, 10185, 13655, 13656, 13714 ], "count": 48388 }, { "category": [ 10108, 13691, 10013, 10103, 10556 ], "count": 33282 }, { "category": [ 10001, 10026, 10209, 10994, 10024, 10185 ], "count": 29061 }, { "category": [ 10004, 10276, 11088, 13412, 10108 ], "count": 28655 }, { "category": [ 10001, 10024, 10185, 10018, 10160, 10829, 10026, 10209, 10993, 12268 ], "count": 27553 } ], "page_types": { "blogs": 5618498, "organization": 986371, "news": 151715, "message-boards": 108645, "ecommerce": 1714153 }, "countries": { "US": 1101607, "DE": 398152, "PT": 331040, "EG": 286713, "ID": 279589, "SA": 243238, "RO": 218588, "PE": 208896, "CH": 189783, "TR": 152754 }, "languages": { "en": 7167668, "de": 462031, "ro": 319029, "es": 188956, "ja": 113182, "ru": 107004, "fr": 105127, "pt": 95892, "tl": 74890, "nl": 40187 } }, { "type": "content_analysis_trends", "date": "2022-12-01", "total_count": 136258, "rank": 582, "top_domains": [ { "domain": "bvhmch.com", "count": 3309 }, { "domain": "truck-drive-shaft.xyz", "count": 3041 }, { "domain": "lnandaleroux.com", "count": 3013 }, { "domain": "alex-car.com.ua", "count": 2853 }, { "domain": "filters2go.com", "count": 2492 }, { "domain": "ayambakarpakd.com", "count": 2157 }, { "domain": "yourpartnumber.com", "count": 1875 }, { "domain": "truckdriveshaft.top", "count": 1675 }, { "domain": "talleresnasio.com", "count": 1550 }, { "domain": "centerfreshuae.com", "count": 1383 } ], "sentiment_connotations": { "anger": 96, "happiness": 6686, "love": 1412, "sadness": 334, "share": 4749, "fun": 682 }, "connotation_types": { "positive": 35605, "negative": 31136, "neutral": 73718 }, "text_categories": [ { "category": [ 10016, 10141, 10763, 10001, 10026, 10209, 10994, 12271, 10004, 10305, 11103, 12400 ], "count": 14418 }, { "category": [ 10009, 10404, 10001, 13655, 13656, 10026, 10209, 10994 ], "count": 4758 }, { "category": [ 10001, 10024, 10185, 10962, 10009, 10404, 10026, 10209, 10994, 12271 ], "count": 1137 }, { "category": [ 10001, 10026, 10209, 10994, 12272, 13131, 10019, 10167, 10872, 13402, 13401 ], "count": 1118 }, { "category": [ 10001, 10026, 10209, 10994 ], "count": 1086 }, { "category": [ 10001, 10026, 10209, 10994, 10024, 10185 ], "count": 1082 }, { "category": [ 10009, 10407, 10001, 10026, 10209, 10994, 12273, 10004, 13464, 10302, 11359, 12676 ], "count": 1063 }, { "category": [ 10010, 10081, 10019, 10167, 10872, 13402, 13401, 10001, 10026, 10209, 10994, 12272, 13131 ], "count": 966 }, { "category": [ 10019, 10167, 10872, 13402, 10001, 10026, 10209, 10994, 12272, 13131, 13401 ], "count": 854 }, { "category": [ 10009, 10404, 10004, 13804, 10001, 10026, 10209, 10994 ], "count": 828 } ], "page_categories": [ { "category": null, "count": 35867 }, { "category": [ 10004, 10276, 11088, 13412, 10108 ], "count": 1469 }, { "category": [ 10009, 10418, 10004, 10282, 11284, 12584 ], "count": 1423 }, { "category": [ 10001, 13655, 13656, 10024, 13714, 10185 ], "count": 1274 }, { "category": [ 10001, 13655, 13656, 10024, 10185, 13714 ], "count": 1116 }, { "category": [ 10009, 10418, 10004, 10282, 11284, 10011, 10085, 10446, 12849 ], "count": 704 }, { "category": [ 10001, 10024, 13714, 13655, 13656, 10185 ], "count": 553 }, { "category": [ 10001, 10024, 10185, 13655, 13656, 13714 ], "count": 428 }, { "category": [ 10001, 10024, 13714, 10185, 13655, 13656 ], "count": 422 }, { "category": [ 10001, 10026, 10209, 10994 ], "count": 368 } ], "page_types": { "blogs": 71295, "organization": 20155, "news": 5384, "message-boards": 2211, "ecommerce": 34382 }, "countries": { "US": 22302, "WW": 7948, "DE": 5127, "AU": 4705, "GB": 4047, "ES": 3865, "UA": 3348, "NL": 2472, "ID": 2365, "BR": 2315 }, "languages": { "en": 102263, "es": 10638, "de": 8315, "ru": 3558, "pt": 2516, "fr": 2373, "nl": 1922, "ja": 1285, "ro": 618, "it": 581 } } ] } ] }
Sentiment By Rating
This feature illustrates the sentiment polarity distribution according to rating scores.
Relying on this information, users can see how the amount of negative sentiment correlates with a lower rating and the amount of positive sentiment – with a higher rating. They can also get some clues for future investigation about the mentions with positive sentiment and low-rating, and vice versa.
To produce this feature, use the Rating Distribution endpoint of Content Analysis API. Once you define a keyword, make a call to the following endpoint:
[ { "keyword": "logitech", "search_mode": "as_is", "internal_list_limit": 3 } ]
The API response will contain citation stats grouped within a set of two rating scores (min and max) that differ by 0.1. To build a graph like the one on our sketch, use the connotation_types
object with the distribution of citations by polarity for each rating score interval.
{ "version": "0.1.20220819", "status_code": 20000, "status_message": "Ok.", "time": "26.5494 sec.", "cost": 0.0203, "tasks_count": 1, "tasks_error": 0, "tasks": [ { "id": "12071633-1535-0466-0000-16ebcc89adb3", "status_code": 20000, "status_message": "Ok.", "time": "26.4916 sec.", "cost": 0.0203, "result_count": 10, "path": [ "v3", "content_analysis", "rating_distribution", "live" ], "data": { "api": "content_analysis", "function": "rating_distribution", "keyword": "logitech", "search_mode": "as_is", "internal_list_limit": 3 }, "result": [ { "type": "content_analysis_rating_distribution", "min": 0, "max": 0.1, "metrics": { "type": "content_analysis_summary", "total_count": 244, "rank": 213, "top_domains": [ { "domain": "pcwelt.de", "count": 51 }, { "domain": "macwelt.de", "count": 18 }, { "domain": "macworld.com", "count": 3 } ], "sentiment_connotations": { "anger": 0, "happiness": 24, "love": 0, "sadness": 0, "share": 0, "fun": 2 }, "connotation_types": { "positive": 78, "negative": 40, "neutral": 96 }, "text_categories": [ { "category": [ 10013, 10019, 10167, 10002, 10028, 10222, 13813 ], "count": 20 }, { "category": [ 10019, 10167, 10013, 10002, 10028, 10222, 13813 ], "count": 14 }, { "category": [ 10019, 10167, 10013, 10007, 13418 ], "count": 12 } ], "page_categories": [ { "category": [ 10002, 10028, 10222, 13813, 10019, 10167, 10873, 12138 ], "count": 2 }, { "category": [ 10019, 10167, 10872, 10007, 10878, 13381, 12161, 13054 ], "count": 2 }, { "category": [ 10019, 10168, 10883, 12187, 13068, 10167, 10007, 10878, 13381, 12161, 13054 ], "count": 2 } ], "page_types": { "blogs": 51, "organization": null, "news": null, "message-boards": null, "ecommerce": 75 }, "countries": { "DE": 69, "US": 5, "PT": 1 }, "languages": { "de": 224, "en": 14, "es": 5 } } }, { "type": "content_analysis_rating_distribution", "min": 0.1, "max": 0.2, "metrics": { "type": "content_analysis_summary", "total_count": 1990, "rank": 267, "top_domains": [ { "domain": "csh.ro", "count": 170 }, { "domain": "x-kom.pl", "count": 37 }, { "domain": "plazacompare.com", "count": 30 } ], "sentiment_connotations": { "anger": 5, "happiness": 72, "love": 0, "sadness": 6, "share": 40, "fun": 7 }, "connotation_types": { "positive": 297, "negative": 764, "neutral": 954 }, "text_categories": [ { "category": null, "count": 526 }, { "category": [ 10013, 10108, 13691 ], "count": 95 }, { "category": [ 10019, 10167 ], "count": 45 } ], "page_categories": [ { "category": null, "count": 235 }, { "category": [ 10019, 10168, 10886, 12216, 12222 ], "count": 17 }, { "category": [ 10019, 10167 ], "count": 15 } ], "page_types": { "blogs": 161, "organization": null, "news": null, "message-boards": null, "ecommerce": 474 }, "countries": { "RO": 190, "US": 106, "PL": 39 }, "languages": { "en": 1120, "pl": 209, "de": 156 } } }, { "type": "content_analysis_rating_distribution", "min": 0.2, "max": 0.3, "metrics": { "type": "content_analysis_summary", "total_count": 8, "rank": 52, "top_domains": [ { "domain": "pocket-lint.com", "count": 3 }, { "domain": "pcmag.com", "count": 1 } ], "sentiment_connotations": { "anger": 0, "happiness": 0, "love": 0, "sadness": 0, "share": 0, "fun": 0 }, "connotation_types": { "positive": 0, "negative": 1, "neutral": 8 }, "text_categories": [ { "category": [ 10108, 13691, 10013, 10103, 10556 ], "count": 5 }, { "category": [ 10013, 10108, 13691 ], "count": 1 }, { "category": [ 10013, 10108, 13691, 10103, 10556 ], "count": 1 } ], "page_categories": [ { "category": [ 10001, 10024, 10185, 10961, 10021, 10177, 10930, 10014, 13605, 13615 ], "count": 1 }, { "category": [ 10007, 13418, 10019, 10167, 10872, 10873, 13776 ], "count": 1 }, { "category": [ 10019, 10167, 10873, 12138, 10108, 13691 ], "count": 1 } ], "page_types": { "blogs": null, "organization": null, "news": 3, "message-boards": null, "ecommerce": 1 }, "countries": { "US": 3, "AU": 1 }, "languages": { "en": 8 } } }, { "type": "content_analysis_rating_distribution", "min": 0.3, "max": 0.4, "metrics": { "type": "content_analysis_summary", "total_count": 1852, "rank": 259, "top_domains": [ { "domain": "xi.express", "count": 52 }, { "domain": "x-kom.pl", "count": 41 }, { "domain": "revain.org", "count": 27 } ], "sentiment_connotations": { "anger": 1, "happiness": 57, "love": 2, "sadness": 2, "share": 3, "fun": 8 }, "connotation_types": { "positive": 315, "negative": 665, "neutral": 830 }, "text_categories": [ { "category": null, "count": 577 }, { "category": [ 10013, 10108, 13691 ], "count": 72 }, { "category": [ 10108, 13691, 10013, 10103, 10556 ], "count": 54 } ], "page_categories": [ { "category": null, "count": 105 }, { "category": [ 10019, 10168, 10883, 12187, 13069, 10886, 12216, 13068 ], "count": 15 }, { "category": [ 10019, 10168, 10883, 12187, 13069, 10886, 12216, 12188, 13073 ], "count": 9 } ], "page_types": { "blogs": 93, "organization": null, "news": null, "message-boards": null, "ecommerce": 320 }, "countries": { "US": 109, "UA": 46, "PL": 45 }, "languages": { "en": 896, "ru": 309, "pl": 228 } } }, { "type": "content_analysis_rating_distribution", "min": 0.4, "max": 0.5, "metrics": { "type": "content_analysis_summary", "total_count": 477, "rank": 258, "top_domains": [ { "domain": "x-kom.pl", "count": 64 }, { "domain": "pcmag.com", "count": 31 }, { "domain": "clubic.com", "count": 12 } ], "sentiment_connotations": { "anger": 0, "happiness": 71, "love": 1, "sadness": 0, "share": 0, "fun": 2 }, "connotation_types": { "positive": 78, "negative": 106, "neutral": 310 }, "text_categories": [ { "category": null, "count": 270 }, { "category": [ 10013, 10108, 13691 ], "count": 12 }, { "category": [ 10019, 10167 ], "count": 9 } ], "page_categories": [ { "category": [ 10019, 10168, 10883, 12187, 13069, 10886, 12216, 12188, 13073 ], "count": 20 }, { "category": [ 10019, 10168, 10883, 12187, 13069, 10886, 12216, 13068 ], "count": 13 }, { "category": [ 10019, 10168, 10883, 12187, 13069, 13068, 10886, 12216 ], "count": 11 } ], "page_types": { "blogs": 3, "organization": null, "news": 23, "message-boards": null, "ecommerce": 112 }, "countries": { "PL": 64, "US": 21, "AU": 17 }, "languages": { "pl": 305, "en": 128, "ru": 24 } } }, { "type": "content_analysis_rating_distribution", "min": 0.5, "max": 0.6, "metrics": { "type": "content_analysis_summary", "total_count": 3574, "rank": 288, "top_domains": [ { "domain": "meta.vn", "count": 297 }, { "domain": "pcmag.com", "count": 141 }, { "domain": "lesnumeriques.com", "count": 66 } ], "sentiment_connotations": { "anger": 0, "happiness": 95, "love": 4, "sadness": 1, "share": 20, "fun": 4 }, "connotation_types": { "positive": 1293, "negative": 612, "neutral": 1650 }, "text_categories": [ { "category": null, "count": 921 }, { "category": [ 10013, 10108, 13691 ], "count": 136 }, { "category": [ 10013, 10019, 10167 ], "count": 100 } ], "page_categories": [ { "category": null, "count": 213 }, { "category": [ 10007, 10878, 13381, 12161, 13054, 10019, 10167 ], "count": 44 }, { "category": [ 10019, 10167 ], "count": 27 } ], "page_types": { "blogs": 156, "organization": null, "news": null, "message-boards": null, "ecommerce": 846 }, "countries": { "VN": 307, "US": 255, "FR": 97 }, "languages": { "en": 1755, "vi": 872, "fr": 254 } } }, { "type": "content_analysis_rating_distribution", "min": 0.6, "max": 0.7, "metrics": { "type": "content_analysis_summary", "total_count": 1958, "rank": 307, "top_domains": [ { "domain": "pcmag.com", "count": 229 }, { "domain": "cnet.com", "count": 197 }, { "domain": "x-kom.pl", "count": 47 } ], "sentiment_connotations": { "anger": 0, "happiness": 79, "love": 1, "sadness": 1, "share": 2, "fun": 4 }, "connotation_types": { "positive": 271, "negative": 137, "neutral": 1534 }, "text_categories": [ { "category": null, "count": 212 }, { "category": [ 10013, 10108, 13691 ], "count": 86 }, { "category": [ 10108, 13691, 10013, 10103, 10556 ], "count": 66 } ], "page_categories": [ { "category": null, "count": 33 }, { "category": [ 10019, 10168, 10886, 12216, 12222 ], "count": 24 }, { "category": [ 10019, 10168, 10883, 12187, 13069, 13068, 12188, 13073 ], "count": 14 } ], "page_types": { "blogs": 29, "organization": null, "news": 266, "message-boards": null, "ecommerce": 402 }, "countries": { "US": 323, "GB": 118, "AU": 109 }, "languages": { "en": 1431, "pl": 213, "fr": 161 } } }, { "type": "content_analysis_rating_distribution", "min": 0.7, "max": 0.8, "metrics": { "type": "content_analysis_summary", "total_count": 10298, "rank": 355, "top_domains": [ { "domain": "pcmag.com", "count": 359 }, { "domain": "cnet.com", "count": 335 }, { "domain": "pocket-lint.com", "count": 141 } ], "sentiment_connotations": { "anger": 2, "happiness": 213, "love": 10, "sadness": 3, "share": 38, "fun": 13 }, "connotation_types": { "positive": 2292, "negative": 1053, "neutral": 6666 }, "text_categories": [ { "category": null, "count": 871 }, { "category": [ 10019, 10167, 10873, 13776, 10007, 10878, 13381, 12133, 13032, 10872 ], "count": 546 }, { "category": [ 10013, 10108, 13691 ], "count": 302 } ], "page_categories": [ { "category": null, "count": 461 }, { "category": [ 10007, 13418, 11496, 10021, 10176, 10917, 13356, 12240, 13116, 13315 ], "count": 106 }, { "category": [ 10019, 10168, 10886, 12216, 12222 ], "count": 88 } ], "page_types": { "blogs": 1232, "organization": null, "news": null, "message-boards": null, "ecommerce": 1741 }, "countries": { "US": 1255, "GB": 236, "AU": 189 }, "languages": { "en": 6913, "nl": 532, "fr": 517 } } }, { "type": "content_analysis_rating_distribution", "min": 0.8, "max": 0.9, "metrics": { "type": "content_analysis_summary", "total_count": 4652, "rank": 374, "top_domains": [ { "domain": "cnet.com", "count": 134 }, { "domain": "pocket-lint.com", "count": 89 }, { "domain": "x-kom.pl", "count": 89 } ], "sentiment_connotations": { "anger": 0, "happiness": 221, "love": 2, "sadness": 5, "share": 35, "fun": 14 }, "connotation_types": { "positive": 1728, "negative": 626, "neutral": 2273 }, "text_categories": [ { "category": null, "count": 748 }, { "category": [ 10019, 10167, 10013, 10007, 13418 ], "count": 116 }, { "category": [ 10013, 10108, 13691 ], "count": 112 } ], "page_categories": [ { "category": null, "count": 308 }, { "category": [ 10019, 10168, 10886, 12216, 12222 ], "count": 30 }, { "category": [ 10019, 10168, 10886, 12222, 12216 ], "count": 30 } ], "page_types": { "blogs": 243, "organization": null, "news": 292, "message-boards": null, "ecommerce": 867 }, "countries": { "US": 515, "GB": 116, "PL": 93 }, "languages": { "en": 2615, "pl": 451, "fr": 327 } } }, { "type": "content_analysis_rating_distribution", "min": 0.9, "max": 1, "metrics": { "type": "content_analysis_summary", "total_count": 28066, "rank": 443, "top_domains": [ { "domain": "1ty.vn", "count": 857 }, { "domain": "north.kim", "count": 360 }, { "domain": "x-kom.pl", "count": 253 } ], "sentiment_connotations": { "anger": 1, "happiness": 1176, "love": 37, "sadness": 38, "share": 417, "fun": 110 }, "connotation_types": { "positive": 12788, "negative": 5465, "neutral": 8364 }, "text_categories": [ { "category": null, "count": 7019 }, { "category": [ 10019, 10167, 10007, 10878, 13381, 12161, 13054 ], "count": 1250 }, { "category": [ 10019, 10167 ], "count": 758 } ], "page_categories": [ { "category": null, "count": 2967 }, { "category": [ 10019, 10167, 10007, 10878, 13381, 12161, 13054 ], "count": 215 }, { "category": [ 10019, 10167 ], "count": 121 } ], "page_types": { "blogs": 3199, "organization": null, "news": null, "message-boards": null, "ecommerce": 6827 }, "countries": { "US": 1302, "VN": 1196, "PL": 420 }, "languages": { "en": 11165, "vi": 6779, "es": 1611 } } } ] } ] }
We hope that this quick overview gave you a few practical development tips. As you can see, when you have the right technologies at hand, assembling a basic dashboard for sentiment analysis of web mentions is not as complex as it might seem.
View more in our step-by-step guide to developing a Brand Sentiment Monitoring Tool >>
Wrap up
In a nutshell, sentiment analysis is based on determining whether a text is positive, negative, or neutral. With the advances in technology, ML and NLP in particular, sentiment analysis now allows companies to get meaningful insights from large volumes of data.
While developing a sentiment analysis system in-house is an incredibly elaborate process, companies usually opt for licensing ready-made technologies, such as APIs.
At DataForSEO, we’re offering a multilingual (70+ lang.) Content Analysis API that will help you collect brand or keyword mentions from across the web, automatically score their sentiment polarity, and capture more advanced emotions, such as love, happiness, or anger.
Don’t miss an opportunity to understand your brand’s online reputation and tweak it on time – try Content Analysis API.