Is there any way to get all public data(like all English tweets) by REST API (not Stream API)?
What scope of data are you talking about? You’re not being hugely specify but there are ways to retrieve Tweets via both the REST or Streaming APIs. What are you trying to achieve?
You can search for a term and specify English as the language and that will return you a result set of Tweets up to 7 days old. Tweets from protected user accounts will be excluded, the index is not complete, and you do have to specify a search query, but this works.
You can retrieve a user’s timeline.
The Streaming API returns up to 1% of the complete firehose of Tweets based on a filter term.
Actually I want to get all English tweets and show tweets that have more than 4 retweets so I have to get all tweets and then check which one has more than 4 retweets and then print them and I don’t want to search for a specific word in order to get all tweets
How can I build this query?
There’s no API support for this, I’m afraid. You’d need to somehow get a full dump of all of the Tweets at any one time. As I mentioned, the only way to retrieve Tweets in any kind of bulk is on the basis of a search, timelines, or the public streams.