What is wrong with Microsoft Text Analytics?

(Update 11/20/2017: Luis Cabrera from Microsoft product team responded in the comments section. Don’t forget to read his response, and please contact him, if you were surprised by the change, and got charged)


I have been working for more than a year now on Power BI integration with Microsoft Cognitive Services Text Analytics APIs, and the sentiment analysis in specific (You may have read my initial work on Microsoft Power BI blog here).

I have been using the free tier, which allowed us (till recently) to pass 5M messages each month, and enjoy the free service. With 5M messages per month we could explore the service, and demonstrate its value. Unfortunately, two weeks ago, I started getting lots of errors from the Text Analytics service. Others started to report the same issues as well (Check the latest comments here).

It seems that Microsoft have recently changed the way that a transaction is counted by the service. According to their pricing page here, 1000 messages in a single API call will be counted as 1000 transactions:

What constitutes a transaction in the Text Analytics API?
Any annotation to a document counts as a transaction. Batch scoring calls will also take into consideration the number of documents that need to be scored in that transaction. So for instance, if 1,000 documents are sent for sentiment analysis in a single API call, that will count for 1,000 transactions. If an API supports more than one annotation operation, that will also be considered. Let’s say an API call performs both sentiment analysis and key-phrase extraction on 1,000 documents, that will count for 2,000 transactions (2 annotations * 1,000 documents).

If you are using Power BI with the Text Analytics API, and receive Forbidden Access errors – Welcome to the club.

If you are already a paying custom, and you have grouped the messages to subsets of 1000 messages per API call, as I have shown here, you will reach your transaction limit of your tier 1000 times faster 🙁

Grouping the messages to 1000 per call will only help you to reduce the number of API calls and avoid reaching the API rate limits of 100 calls/minute.

Note that the Metric on Azure portal still count the usage by API calls, and not by the transactions – so don’t trust on this reporting element to warn you in advance when you are getting near your transaction limit in the tier you are using.


Let me know what you think about this change, in the comments below. Hope that Microsoft will reconsider the change. For now, it’s time to move to a higher pricing tier… or send lots of support tickets to Microsoft, complaining about this change.


  1. Rui Romano Reply

    Yesterday I got the 409 error, without noticing this change I upgraded to S0 executed a bulk load over a 1.6M comments ane then got the bill pf +9k$…

  2. Max Reply

    This is just terrible. It’s unacceptable that Microsoft changes its tiers so subrepticiously. Im already opening a complaint in customer support.

  3. william Reply

    Once again, difficult to build a business based on such software editor who change his business model without taking care of the ecosystem. I had the same with SQL server between 2005 and 2008 when they removed the “per CAL” model, our software was based on and this change had an important impact over the cost 🙁
    I am looking at other solutions such as Algorithmia but integration with Power Bi is still in progress.

  4. luiscabreracordon Reply

    Hi all,

    I am the program manager for the text analytics service. First of all, I would like to apologize if any of these pricing changes took you by surprise (specially if you missed the customer communication somehow).

    We sent an official communications more than a month ago to let our customers know of the pricing change for Text analytics, and provided a buffer for customers to have time to adapt to the new pricing.

    We changed the description on the pricing tiers — but I can see how a customer that was used to the old pricing tier may have miss the change.

    @Rui, I am surprised that you already got a bill — since we did not start charging at this rate until November 1st. Please do contact me at luisca@microsoft.com, I will see what we can do for you if you were charged incorrectly.

    We are adding a new diagram to show not only the number of calls, but also the number of transactions that you are accruing so that we can be fully transparent on your consumption.

    Our new pricing is competitive with other offers in the market that provide similar capabilities, and is based on the amount of work done (a person that gets 1000 times the value pays 1000 times the price).

    That said, if you were caught off guard by the change, please do contact me,

    -Luis Cabrera

    • Gil Raviv Post authorReply

      Thank you Luis for the quick response. I definitely missed the email from Azure. Looking forward to see the new diagram on Azure Portal to better monitor the usage.

  5. Mike Honey Reply

    @Luis I believe I’ve found the email you referred to – subject “Azure product announcements and updates”, received Fri 13/10/2017 10:44 AM. The last topic (4 screens down) is “Microsoft Cognitive Services: Text Analytics API generally available”. The only reference I see to pricing changes is “General availability (GA) pricing will take effect on November 1, 2017.”. Happy to stand corrected if that’s not what you referring to when you wrote “official communications”.

    It seems very short notice for a change with such a dramatic impact on pricing. I suspect you have burnt a lot of trust amongst your early adopters and created unnecessary work all round by the handling of this change.

    I found the results from this service were of too poor quality to use or recommend to my clients, so I fortunately only have demo apps running through the Free Tier.

  6. luiscabreracordon Reply

    @Mike, Thanks for the feedback. We are always working to improve the quality of our models. Feel free to email me directly (luisca@microsoft) with examples where you found issues; and we can look for patterns so that we can train our model further.

  7. Pramod Ghag Reply

    Is there a way to integrate any other sentiment analysis API with the existing files. Just a thought…

  8. Raynok Reply

    5000000 -> 500000 -> 50000 -> 5000 . . . Could of least dropped 2 zero’s instead of 3 zeros leaving the community to play with 50000. Each time we refresh power BI it forwards the previous sentiment scored data again to be scored, unless there is another way to save transactions counts by only sending new rows (non scored) . Secondly in azure monitoring how does one add the monitor for transaction counts . Thirdly has anyone been able to schedule refresh their sentiment reports via power BI cloud services? Spent some time investigating and it doesn’t seem plausible at the moment. Just a point of view, the change implemented on the api feels like ” cart before the donkey” and that is a technical point of view based on the fact that a new diagram is still being built to show us transaction count via the azure portal. That would of helped us understand the implications or cost factors during the 1 month head notice. If we being honest with each other, the packaging of 1000 messages in 1 api call has just been patched with a new subscription model.

Leave a Reply