Thanks for the feedback and comments here. Let me directly answer the question (with apologies for not giving something you felt could be a helpful answer the first time around), and then talk about the alternative.
What you’re essentially asking is, what the limitations are on the Streaming API, and how to avoid them if possible.
- the Streaming API provides 1% of the total firehose
- the Streaming API is free to use, and has no specific SLA for support or service
- apps are limited to one or two connections per consumer key. There are additional limits in place to avoid having developers try to avoid the restriction by creating a number of different apps on the same IP (this is per the section of the Developer Agreement that talks about access restrictions, II.B). So to address your question, yes, if you tried to do this, it would be detected and your apps may stop being able to connect.
- there are limitations on the length of filter queries, and in the numbers of terms and users you can track on a single connection. These numbers are in the API documentation.
- we request that you don’t constantly connect and reconnect to the endpoint, per the section on reconnecting to the streaming API in the overview documentation. This means that if you are constantly wanting to add terms or users to a filter track query, your users won’t have a great experience as you’re likely to get held back from connecting too often. Once a day probably would be OK, I’ve had my own apps and IPs restricted for doing it too often within a few hours, for instance.
So that (I hope) covers your question.
The reason I mentioned Gnip in my original answer was for two reasons, which I feel are good ones:
- PowerTrack is amazingly flexible, and allows you to modify rules on-the-fly, without any connection issues.
- it is fully-supported and offers redundancy and resiliency, so the other restrictions I mentioned are not a problem, i.e. it is a solid solution for building your own business offerings where you can rely on performance and support.
Fully understand that this is not an option for everyone. I apologise again that you didn’t feel that my initial response answered your question. I hope this clears up any confusion I created.
Always appreciate the feedback on our API and platform offerings, and I’ll be sure to share your thoughts with our team - that’s my role, as your developer advocate.