> ## Documentation Index
> Fetch the complete documentation index at: https://www.meilisearch.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Python quick start

> Get started with Meilisearch using the Python SDK in 5 minutes.

This guide walks you through setting up Meilisearch with Python.

## Prerequisites

* Python 3.8 or higher
* A Meilisearch instance ([Cloud](https://cloud.meilisearch.com) or [self-hosted](/resources/self_hosting/getting_started/quick_start))

## 1. Install the SDK

```bash theme={null}
pip install meilisearch
```

## 2. Connect to Meilisearch

```python theme={null}
import meilisearch
import os

client = meilisearch.Client(
    os.environ.get('MEILISEARCH_URL'),
    os.environ.get('MEILISEARCH_KEY')
)
```

<Note>
  **Set your environment variables:**

  ```bash theme={null}
  export MEILISEARCH_URL="https://your-instance.meilisearch.io"  # or http://localhost:7700
  export MEILISEARCH_KEY="your_api_key"
  ```

  [Get a free Cloud instance →](https://cloud.meilisearch.com)
</Note>

## 3. Add documents

```python theme={null}
movies = [
    {'id': 1, 'title': 'The Matrix', 'genres': ['Action', 'Sci-Fi'], 'year': 1999},
    {'id': 2, 'title': 'Inception', 'genres': ['Action', 'Thriller'], 'year': 2010},
    {'id': 3, 'title': 'Interstellar', 'genres': ['Drama', 'Sci-Fi'], 'year': 2014}
]

# Add documents to the 'movies' index
task = client.index('movies').add_documents(movies)

# Wait for indexing to complete
client.wait_for_task(task.task_uid)
```

## 4. Search

```python theme={null}
results = client.index('movies').search('matrix')

print(results['hits'])
# [{'id': 1, 'title': 'The Matrix', 'genres': ['Action', 'Sci-Fi'], 'year': 1999}]
```

## 5. Search with filters

First, configure filterable attributes:

```python theme={null}
client.index('movies').update_filterable_attributes(['genres', 'year'])
```

Then search with filters:

```python theme={null}
results = client.index('movies').search('', {
    'filter': 'genres = "Sci-Fi" AND year > 2000'
})
```

## Full example

```python theme={null}
import meilisearch
import os

client = meilisearch.Client(
    os.environ.get('MEILISEARCH_URL'),
    os.environ.get('MEILISEARCH_KEY')
)

# Add documents
movies = [
    {'id': 1, 'title': 'The Matrix', 'genres': ['Action', 'Sci-Fi'], 'year': 1999},
    {'id': 2, 'title': 'Inception', 'genres': ['Action', 'Thriller'], 'year': 2010},
    {'id': 3, 'title': 'Interstellar', 'genres': ['Drama', 'Sci-Fi'], 'year': 2014}
]

task = client.index('movies').add_documents(movies)
client.wait_for_task(task.task_uid)

# Search
results = client.index('movies').search('inter')
print(results['hits'])
```

## Next steps

<CardGroup cols={2}>
  <Card title="Full-text search" icon="magnifying-glass" href="/capabilities/full_text_search/relevancy/relevancy">
    Configure ranking and relevancy
  </Card>

  <Card title="Filtering" icon="filter" href="/capabilities/filtering_sorting_faceting/getting_started">
    Add filters and facets
  </Card>

  <Card title="AI-powered search" icon="brain" href="/capabilities/hybrid_search/getting_started">
    Add semantic search
  </Card>

  <Card title="API reference" icon="code" href="/reference/api/search/search-with-post">
    Explore all search parameters
  </Card>
</CardGroup>

## Resources

* [meilisearch-python on GitHub](https://github.com/meilisearch/meilisearch-python)
* [SDK documentation](https://github.com/meilisearch/meilisearch-python#readme)
