How to search for Tweets about various 'Topics' using the Twitter API v2
Tags: twitter, api
Published: 2022-10-18 17:09:35

The [Twitter API v2](https://developer.twitter.com/en/docs/twitter-api) allows developers and researchers to search for Tweets programmatically using the [recent search endpoint](https://developer.twitter.com/en/docs/twitter-api/tweets/search/quick-start/recent-search) (available for all developers) and [full-archive search endpoint](https://developer.twitter.com/en/docs/twitter-api/tweets/search/quick-start/full-archive-search) (available in the academic researcher product track). In order to search for Tweets using these endpoints, you have to specify your request in terms of a [search query](https://developer.twitter.com/en/docs/twitter-api/tweets/search/integrate/build-a-query). In your search query you can use specify that `keywords` that you want the Tweets returned for and also use various operators such as `from:`, `has:`, `is:` etc. The Twitter API v2 supports a new search operator: `context:`. This operators let you search for Tweets on certain `topics` and `entities` that are available in the Twitter API as part of [**Tweet Annotations**](https://developer.twitter.com/en/docs/twitter-api/annotations/overview).

So for example, if you want to search for all Tweets that are about the LA Lakers, instead of building a search query like `'LA Lakers OR #LakeShow'` etc., your can be `'context:12.706083845846597632'` and it will give you all the Tweets about the `Los Angeles Lakers`. The question is, how do you know what the value is for the `Los Angeles Lakers` entity, in order to use the `context:` operator? In this guide, I will show you how to get the ID value for a topic to use with the `context:` operator to search for Tweets about a topic.

## Step 1: Find a Tweet that represents a topic that you want to search for Tweets on

To do so simply, search for that topic using a keyword of your choice on Twitter. In this example, I want all Tweets about the `Los Angeles Lakers` so I simply searched for a Tweet with the hashtag `#LakeShow` on Twitter. I got a Tweet with the following URL: https://twitter.com/Lakers/status/1582026396917866497.

 ![Tweet with the hashtag #LakeShow](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qwn4fx8h26jp92zm69ux.png)

## Step 2: Paste this link in the Tweet entity extractor tool

 I put together a sample app that gives you the key & value combination to use with the `context:` operator. To use this app, open your browser and go to: https://tweet-entity-extractor.glitch.me/. In this app, pase the Tweet URL from step 1, and click on Get context ID! This will give you a response like the one shown below:

```json
[
  {
    "context": "3.10000607734",
    "entity_name": "NBA Basketball"
  },
  {
    "context": "11.706083902411055104",
    "entity_name": "Basketball"
  },
  {
    "context": "12.706083845846597632",
    "entity_name": "Los Angeles Lakers"
  },
  {
    "context": "26.706083889454813185",
    "entity_name": "NBA"
  },
  {
    "context": "46.1557697289971322880",
    "entity_name": "Sports & Fitness Business"
  }
]
```

From this response, you can see that the ID to use for the `Los Angeles Lakers` topic is `12.706083845846597632`.

**Note:** Some Topics may have multiple `key.value` pairs so you can chose one of those. 

## Step 3: Use the ID value from the previous step in your search query & get Tweets for a Topic

Now that you have the ID for the topic of your choice, simply use it in your search query. Below is a code snippet that shows how you can use `context:` operator in Python to get Tweets on a topic (Los Angeles Lakers in this case) using the key value pair from the previous step. (The code below uses the Tweepy package in Python, so make sure you have it installed, using the steps shown [here](https://dev.to/twitterdev/a-comprehensive-guide-for-using-the-twitter-api-v2-using-tweepy-in-python-15d9))

```python
import tweepy

client = tweepy.Client(bearer_token='REPLACE_ME')

response = client.search_recent_tweets(query='context:12.706083845846597632')

for tweet in response.data:
    print(tweet.id)
```

**Note:** Not all Tweets are annotated. You can find more information and FAQs on Tweet annotations [here](https://developer.twitter.com/en/docs/twitter-api/annotations/faq).

I hope you are now able to get Tweets based on topics of your interest. The Tweet Annotations support various topics, so feel free to explore the available topics using the steps show above. If you have any questions, feel free to DM me on [Twitter](https://twitter.com/suhemparack).