---
title: "Search in All of Flare's Events"
---
Global searches in Flare is exposed through the
[global/_search ](/api-reference/v4/endpoints/global-search)
endpoint.
This guide details a typical search use case and provides an example for how to impement it.
## Use Case
- Export all chat messages collected by Flare in the last 6 hours that match the `fraud` keyword.
- Save our last page cursor so that we can resume fetching results in a future execution.
## Body Parameters
To achieve the desired results, the following body parameters will be used:
| Parameter | Value | Justification |
| --------- | ----- | ------------- |
| query.query_string | fraud | The keyword we are looking for. |
| filter.types | chat_message | Retrieve only the chat_message events. |
| order | asc | Retrieve results in ascending order so that we can resume fetching in the future. |
| filter.estimated_created_at.gte | `` | Replace `` with a timestamp that corresponds to 6 hours that we can fetch all results until the current time.
### Query string examples
Global search supports the Lucene Query Syntax, which supports, among other things, boolean operators and regexes. Here are some common example queries.
| Description | Example |
| ----------- | ------- |
| Search for a telegram channel named "Best Telegram Source" | conversation_name:"Best Telegram Source"
## Paging
The search endpoint uses parameters that match the
[Flare standard paging pattern ](/concepts/paging).
## Fetching new results in future executions
It is possible to save the `next` in a database and use it to resume fetching new results in the future.
However, it is important that future requests use the same parameters for everything else but `next`. Even the time filter.
## End-to-End Examples
These are end-to-end examples in various programming languages.
```python
import datetime
import time
from flareio import FlareApiClient
api_client = FlareApiClient.from_env()
from_timestamp: str = (
datetime.datetime.now(tz=datetime.timezone.utc) - datetime.timedelta(hours=1)
).isoformat()
last_from: str | None = None
fetched_pages: int = 0
for resp in api_client.scroll(
method="POST",
url="/firework/v4/events/global/_search",
json={
"size": 10,
"order": "asc",
"from": last_from,
"filters": {
"type": ["chat_message"],
"estimated_created_at": {"gte": from_timestamp},
},
"query": {
"type": "query_string",
"query_string": "hello",
},
},
):
# Rate limiting (search).
time.sleep(1)
resp_data: dict = resp.json()
items: list[dict] = resp_data["items"]
fetched_pages += 1
print(f"Fetched page {fetched_pages} with {len(items)} results...")
# Save the last "next" value.
last_from = resp_data.get("next") or last_from
# (Optional): Get the full data
for item in items:
# Rate limiting (default).
time.sleep(0.25)
event_response = api_client.get(
url="/firework/v2/activities/",
params={
"uid": item["metadata"]["uid"],
},
)
full_data = event_response.json()
print(f"Here is the full data of the event: {full_data}")
print(f"The next execution could resume using {last_from=}.")
```