# Threads Scraper — Posts, Perfis, Hashtag & Palavra-chave (`claude_code_reviewer/threads-scraper-br`) Actor

Cinco modos num só actor: perfis, hashtags, busca por palavra-chave, posts com respostas e feeds personalizados. Cole em massa até 100 usuários ou termos, filtros de data relativa, métricas de engajamento, timestamps ISO. Sem login. $0.005 por resultado.

- **URL**: https://apify.com/claude\_code\_reviewer/threads-scraper-br.md
- **Developed by:** [Reggie](https://apify.com/claude_code_reviewer) (community)
- **Categories:** AI, SEO tools, Social media
- **Stats:** 1 total users, 0 monthly users, 100.0% runs succeeded, 2 bookmarks
- **User rating**: No ratings yet

## Pricing

$5.00 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## 🧵 Threads Scraper — Documentação Oficial

O **Threads Scraper** é uma solução unificada para extração de dados públicos do Meta Threads. Desenvolvido para máxima eficiência, ele permite coletar dados de **perfis, hashtags, buscas por keywords, posts individuais e feeds** sem a necessidade de login ou tokens oficiais da API da Meta.

### 🚀 Visão Geral

Este Actor foi desenhado para ser **plug-and-play**. Ideal para times de marketing, growth engineers, pesquisadores de dados e desenvolvedores de SaaS que precisam de inteligência competitiva e *social listening* em escala.

* **Zero Setup:** Sem necessidade de login ou proxy complexo.
* **Escalabilidade:** Suporta input em massa (bulk) de até 100 entradas por execução.
* **Custo-Benefício:** Modelo *pay-as-you-go* de **$0.005 por resultado**, sem taxas de adesão.

---

### 📊 Data Points (Campos Extraídos)

Para cada post processado, o scraper entrega um dataset estruturado com os seguintes campos:

#### Objeto: Post

* `postId`, `postUrl`: Identificadores únicos.
* `content`: Conteúdo textual completo.
* `publishedAt`: Timestamp original e formatado (ISO).
* `metrics`: Contagens de `likes`, `replies`, `reposts`, `shares`, `views` e `quotes`.
* `media`: Detecção de tipo (`photo`, `video`, `carousel`) e lista de URLs de mídia.
* `threadParts[]`: Agrupamento automático de posts encadeados (threads longas).

#### Objeto: Autor & Respostas

* `author`: Handle do usuário.
* `replies[]`: (Apenas no modo `post`) Lista das 20 principais respostas, incluindo autor e conteúdo.

> **Nota Técnica:** Os nomes dos campos (chaves do JSON) são mantidos em inglês para garantir compatibilidade com pipelines de dados internacionais e bibliotecas de integração.

---

### ⚙️ Modos de Operação

O Scraper opera em 5 modos distintos, selecionáveis via parâmetro `mode`:

| Modo | Descrição | Input Principal |
| :--- | :--- | :--- |
| **👤 User** | Extrai o histórico de posts de perfis específicos. | `usernames[]` |
| **🏷️ Hashtag** | Scrape de posts associados a uma hashtag ou tópico. | `keywords[]` |
| **🔎 Search** | Busca global por palavras-chave (Top ou Recentes). | `keywords[]` |
| **💬 Post** | Foca em um post específico e suas respostas (replies). | `postUrls[]` |
| **📰 Feed** | Coleta dados de qualquer URL de feed customizado. | `feedUrls[]` |

---

### 🛠️ Configuração de Entrada (Inputs)

| Parâmetro | Tipo | Descrição |
| :--- | :--- | :--- |
| `mode` | `enum` | Escolha entre `user`, `hashtag`, `search`, `post`, `feed`. |
| `usernames` | `array` | Lista de handles (ex: `["zuck", "mosseri"]`). Máx 100. |
| `bulkUsernames` | `string` | Texto livre para colar lista de usuários (um por linha). |
| `maxPosts` | `int` | Limite de resultados por fonte (Default: 50). |
| `dateFrom` | `string` | Filtro temporal (ex: `2026-01-01` ou `7 days`). |
| `searchSort` | `enum` | Ordenação para busca: `top` ou `recent`. |

---

### 💡 Exemplos de Uso

#### Extração de Perfis (JSON)

```json
{
  "mode": "user",
  "usernames": ["zuck", "mosseri"],
  "maxPosts": 100
}
````

#### Monitoramento de Tendências (Keyword Search)

```json
{
  "mode": "search",
  "keywords": ["Inteligência Artificial", "SaaS"],
  "searchSort": "recent",
  "dateFrom": "1 month"
}
```

***

### ⚠️ Notas e Limites Técnicos

- **Early Exit:** O scraper possui inteligência para interromper a execução caso detecte feeds inativos, economizando créditos.
- **Normalização de Métricas:** Valores abreviados pelo Threads (ex: `10K`) são automaticamente convertidos para inteiros (`10000`) para facilitar cálculos.
- **Dados Públicos:** O acesso é limitado a conteúdos visíveis sem login. Perfis privados não são acessíveis.
- **Threads Encadeadas:** Posts divididos em várias partes são mesclados em um único registro no campo `threadParts[]`.

***

### ❓ Perguntas Frequentes (FAQ)

**Como passar os usernames corretamente?**
Utilize apenas o handle simples: `usuario`, sem o símbolo `@`. O sistema limpa automaticamente URLs caso você as insira por engano.

**Quais formatos de exportação são aceitos?**
Como o Scraper roda na infraestrutura Apify, você pode exportar em **JSON, CSV, Excel, XML ou HTML Table**.

**Por que não usar a API Oficial da Meta?**
A API oficial é voltada para gestão de conteúdo próprio. Para **Pesquisa de Mercado** e **Análise Competitiva**, o Scraper é mais ágil, não exige aprovação de App e oferece acesso a dados que a API restringe.

***

### ⚖️ Aviso Legal e Compliance

Este software coleta apenas dados publicamente disponíveis. O uso desta ferramenta deve estar em conformidade com as regulamentações locais de proteção de dados (como a **LGPD** no Brasil e **GDPR** na Europa). Recomendamos o uso ético para fins de pesquisa, monitoramento de marca e analytics.

***

*Desenvolvido para profissionais de dados que buscam agilidade e precisão no ecossistema Meta.*

# Actor input Schema

## `mode` (type: `string`):

O que você quer extrair? Escolha um modo e preencha a seção correspondente abaixo.

## `usernames` (type: `array`):

Usernames do Threads (sem @, sem URL). Exemplo: zuck, mosseri. Usado quando o Modo = User.

## `bulkUsernames` (type: `string`):

**Um username por linha**, pressione Enter entre cada um. **Sem aspas, sem vírgulas.** Exemplo:

```
zuck
mosseri
finkd
```

Você pode copiar uma coluna direto do Google Sheets ou Excel. Mesclado com a lista de Usernames em tempo de execução.

## `keywords` (type: `array`):

Palavras-chave para o modo Busca, ou hashtags para o modo Hashtag (# inicial opcional). Exemplo: notícias IA, #tecnologia.

## `bulkKeywords` (type: `string`):

**Uma palavra-chave ou hashtag por linha**, pressione Enter entre cada uma. **Sem aspas, sem vírgulas.** Exemplo:

```
agentes LLM
coding com IA
#AI
```

Mesclado com a lista de Palavras-chave em tempo de execução.

## `searchSort` (type: `string`):

Ordem dos resultados da busca por palavra-chave. Aplica-se apenas ao Modo = Busca.

## `dateFrom` (type: `string`):

Data mais antiga dos posts. Aceita YYYY-MM-DD ou uma expressão relativa como "7 days", "1 month".

## `dateTo` (type: `string`):

Data mais recente dos posts. Aceita YYYY-MM-DD ou uma expressão relativa.

## `postUrls` (type: `array`):

URLs completas de posts do Threads. Usado quando Modo = Post. Exemplo: https://www.threads.com/@user/post/ABC123.

## `feedUrls` (type: `array`):

URLs de feeds personalizados do Threads. Usado quando Modo = Feed. Exemplo: https://www.threads.com/custom\_feed/18113589370710265.

## `maxPosts` (type: `integer`):

Número máximo de posts por fonte. Mais posts = mais resultados faturáveis ($0.005 cada). A rolagem é gerenciada automaticamente.

## Actor input object example

```json
{
  "mode": "user",
  "usernames": [
    "zuck"
  ],
  "searchSort": "top",
  "maxPosts": 50
}
```

# Actor output Schema

## `dataset` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "mode": "user",
    "usernames": [
        "zuck"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("claude_code_reviewer/threads-scraper-br").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "mode": "user",
    "usernames": ["zuck"],
}

# Run the Actor and wait for it to finish
run = client.actor("claude_code_reviewer/threads-scraper-br").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "mode": "user",
  "usernames": [
    "zuck"
  ]
}' |
apify call claude_code_reviewer/threads-scraper-br --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=claude_code_reviewer/threads-scraper-br",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

````json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Threads Scraper — Posts, Perfis, Hashtag & Palavra-chave",
        "description": "Cinco modos num só actor: perfis, hashtags, busca por palavra-chave, posts com respostas e feeds personalizados. Cole em massa até 100 usuários ou termos, filtros de data relativa, métricas de engajamento, timestamps ISO. Sem login. $0.005 por resultado.",
        "version": "1.0",
        "x-build-id": "JVqePke1a8la36dCo"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/claude_code_reviewer~threads-scraper-br/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-claude_code_reviewer-threads-scraper-br",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/claude_code_reviewer~threads-scraper-br/runs": {
            "post": {
                "operationId": "runs-sync-claude_code_reviewer-threads-scraper-br",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/claude_code_reviewer~threads-scraper-br/run-sync": {
            "post": {
                "operationId": "run-sync-claude_code_reviewer-threads-scraper-br",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "mode": {
                        "title": "🎯 Modo",
                        "enum": [
                            "user",
                            "hashtag",
                            "search",
                            "post",
                            "feed"
                        ],
                        "type": "string",
                        "description": "O que você quer extrair? Escolha um modo e preencha a seção correspondente abaixo.",
                        "default": "user"
                    },
                    "usernames": {
                        "title": "👤 Usernames",
                        "maxItems": 100,
                        "uniqueItems": true,
                        "type": "array",
                        "description": "Usernames do Threads (sem @, sem URL). Exemplo: zuck, mosseri. Usado quando o Modo = User.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "bulkUsernames": {
                        "title": "📋 Colar usernames em massa",
                        "type": "string",
                        "description": "**Um username por linha**, pressione Enter entre cada um. **Sem aspas, sem vírgulas.** Exemplo:\n\n```\nzuck\nmosseri\nfinkd\n```\n\nVocê pode copiar uma coluna direto do Google Sheets ou Excel. Mesclado com a lista de Usernames em tempo de execução."
                    },
                    "keywords": {
                        "title": "🏷️ Palavras-chave / Tags",
                        "maxItems": 100,
                        "uniqueItems": true,
                        "type": "array",
                        "description": "Palavras-chave para o modo Busca, ou hashtags para o modo Hashtag (# inicial opcional). Exemplo: notícias IA, #tecnologia.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "bulkKeywords": {
                        "title": "📋 Colar palavras-chave em massa",
                        "type": "string",
                        "description": "**Uma palavra-chave ou hashtag por linha**, pressione Enter entre cada uma. **Sem aspas, sem vírgulas.** Exemplo:\n\n```\nagentes LLM\ncoding com IA\n#AI\n```\n\nMesclado com a lista de Palavras-chave em tempo de execução."
                    },
                    "searchSort": {
                        "title": "🔀 Ordenação da busca",
                        "enum": [
                            "top",
                            "recent"
                        ],
                        "type": "string",
                        "description": "Ordem dos resultados da busca por palavra-chave. Aplica-se apenas ao Modo = Busca.",
                        "default": "top"
                    },
                    "dateFrom": {
                        "title": "📅 Data inicial",
                        "type": "string",
                        "description": "Data mais antiga dos posts. Aceita YYYY-MM-DD ou uma expressão relativa como \"7 days\", \"1 month\"."
                    },
                    "dateTo": {
                        "title": "📅 Data final",
                        "type": "string",
                        "description": "Data mais recente dos posts. Aceita YYYY-MM-DD ou uma expressão relativa."
                    },
                    "postUrls": {
                        "title": "💬 URLs de posts",
                        "uniqueItems": true,
                        "type": "array",
                        "description": "URLs completas de posts do Threads. Usado quando Modo = Post. Exemplo: https://www.threads.com/@user/post/ABC123.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "feedUrls": {
                        "title": "📰 URLs de feed",
                        "uniqueItems": true,
                        "type": "array",
                        "description": "URLs de feeds personalizados do Threads. Usado quando Modo = Feed. Exemplo: https://www.threads.com/custom_feed/18113589370710265.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxPosts": {
                        "title": "📊 Máximo de posts",
                        "minimum": 1,
                        "maximum": 500,
                        "type": "integer",
                        "description": "Número máximo de posts por fonte. Mais posts = mais resultados faturáveis ($0.005 cada). A rolagem é gerenciada automaticamente.",
                        "default": 50
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
````
