# Stack Overflow & Stack Exchange to Markdown for AI / RAG (`haketa/stackexchange-rag`) Actor

Turn Stack Overflow & Stack Exchange Q\&A into clean, RAG-ready Markdown for AI agents, LLMs and vector databases. Search 180+ sites by keyword or tag and get questions with accepted & top-voted answers as code-block-preserving Markdown — scores, tags, links and MCP support included.

- **URL**: https://apify.com/haketa/stackexchange-rag.md
- **Developed by:** [Haketa](https://apify.com/haketa) (community)
- **Categories:** AI, Developer tools, Agents
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.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.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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/docs.md):

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

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python/docs.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/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

## Stack Overflow & Stack Exchange to Markdown — for AI, RAG & LLM Agents

Turn any **Stack Overflow** or **Stack Exchange** search into clean, **RAG-ready Markdown**. Give this Actor a query (and optionally tags or a site) and it returns the matching questions together with their **accepted and top-voted answers**, converted to tidy Markdown with **code blocks preserved** — ready to drop straight into a vector database, an LLM prompt, a fine-tuning dataset, or an AI agent's tool belt.

No HTML soup. No scraping boilerplate. No login. Just structured Q&A knowledge your model can actually read.

---

### Why this Actor?

Large language models are great at reasoning but terrible at remembering the exact flag, the exact stack trace, or the exact one-liner that fixes a bug. That knowledge lives on Stack Overflow and the 180+ Stack Exchange communities — but it's wrapped in HTML, pagination, and vote metadata that a model can't consume directly.

This Actor bridges that gap. It gives your AI stack a **real-time, on-demand knowledge feed** of developer and expert Q&A, formatted the way models like it best: **Markdown**.

- **RAG grounding** — pull the top answers for a topic and embed them, so your assistant answers from real, up-voted solutions instead of hallucinating.
- **AI agent tool** — let an autonomous agent look up "how do I do X" at runtime and get back a clean answer with working code.
- **LLM fine-tuning / eval datasets** — build instruction/answer pairs from high-score, accepted answers across any Stack Exchange community.
- **Research & analysis** — study how a technology, error, or topic is discussed, with scores and view counts attached.

Because the underlying knowledge source is public and keyless, runs are **fast and cheap**, and every field comes back clean and predictable.

---

### What you get

For every question the Actor returns a flat record with:

| Field | Description |
| --- | --- |
| `questionId` | Stable question identifier |
| `title` | Question title (decoded, plain text) |
| `url` | Direct link to the question |
| `score` | Net votes on the question |
| `tags` | Comma-separated tags |
| `isAnswered` | Whether the question has an accepted answer |
| `answerCount` | Total number of answers |
| `viewCount` | Number of views |
| `creationDate` | When the question was asked (ISO 8601) |
| `owner` | Display name of the asker |
| `questionMarkdown` | The **question body** as clean Markdown |
| `answersMarkdown` | The **top N answers** as Markdown (accepted answer first) |
| `combinedMarkdown` | The whole Q&A as **one RAG-ready Markdown block** |
| `scrapedAt` | Extraction timestamp (ISO 8601) |

The `combinedMarkdown` field is the star of the show: a single, self-contained document per question — title, metadata, question, and the best answers — that you can embed or feed to a model with zero post-processing.

---

### Example output

```json
{
  "questionId": "53645882",
  "title": "Pandas Merging 101",
  "url": "https://stackoverflow.com/questions/53645882/pandas-merging-101",
  "score": "954",
  "tags": "python, pandas, join, merge, concatenation",
  "isAnswered": "true",
  "answerCount": "8",
  "viewCount": "468730",
  "creationDate": "2018-12-06T10:59:39.000Z",
  "owner": "coldspeed",
  "questionMarkdown": "- How can I perform a (`INNER`|`LEFT`|`RIGHT`|`FULL` `OUTER`) `JOIN` with pandas? ...",
  "answersMarkdown": "### Answer 1 (score 1305 ✓ Accepted) — coldspeed\n\nThis post aims to give readers a primer on SQL-flavored merging ...",
  "combinedMarkdown": "# Pandas Merging 101\n\n**Score:** 954 · **Answers:** 8 · **Views:** 468730 · **Tags:** python, pandas, join, merge, concatenation\n\n## Question\n...\n\n## Answers\n### Answer 1 (score 1305 ✓ Accepted) — coldspeed\n...",
  "scrapedAt": "2026-07-05T14:21:00.000Z"
}
````

The `combinedMarkdown` rendered looks like this:

> # Pandas Merging 101
>
> **Score:** 954 · **Answers:** 8 · **Views:** 468730 · **Tags:** python, pandas, join, merge
>
> ## Question
>
> How can I perform an INNER / LEFT / RIGHT / FULL OUTER JOIN with pandas? …
>
> ## Answers
>
> ### Answer 1 (score 1305 ✓ Accepted) — coldspeed
>
> This post aims to give readers a primer on SQL-flavored merging with Pandas …
>
> ```python
> df1.merge(df2, on='key', how='inner')
> ```

Code blocks keep their language hints (` ```python `, ` ```sql `, ` ```js `) so downstream syntax highlighting and code-aware chunking just work.

***

### Input

| Field | Type | Default | Description |
| --- | --- | --- | --- |
| `query` | string | `async await forEach` | What to search for. Free-text, matched against titles and bodies. |
| `site` | string | `stackoverflow` | Which community to search (see list below). |
| `tags` | array | `[]` | Restrict to these tags, e.g. `["python","pandas"]`. |
| `sort` | string | `relevance` | `relevance`, `votes`, `activity`, or `creation`. |
| `answersPerQuestion` | integer | `3` | How many top answers to include (accepted first). `0` = question only. |
| `acceptedOnly` | boolean | `false` | Keep only questions that have an accepted answer. |
| `maxItems` | integer | `100` | Maximum number of questions to return. |
| `apiKey` | string | — | Optional free key for a higher daily quota (see Quota below). |

#### Minimal input

```json
{
  "query": "nginx reverse proxy websocket",
  "site": "serverfault",
  "maxItems": 50
}
```

#### Tag-driven input (no free-text query)

```json
{
  "query": "",
  "site": "stackoverflow",
  "tags": ["rust", "async"],
  "sort": "votes",
  "answersPerQuestion": 5,
  "acceptedOnly": true,
  "maxItems": 200
}
```

***

### Which sites can I search?

Any Stack Exchange community — just pass its slug as `site`. Some of the most useful for AI/dev use cases:

- **stackoverflow** — programming (the big one)
- **serverfault** — servers, networking, ops
- **superuser** — computers & software power users
- **askubuntu** — Ubuntu / Linux
- **unix** — Unix & Linux
- **dba** — databases
- **math** — mathematics
- **stats** (Cross Validated) — statistics, ML, data science
- **datascience** — data science
- **ai** — artificial intelligence
- **security** (Information Security) — infosec
- **devops** — DevOps
- **codereview** — code review
- **softwareengineering** — software design
- **electronics** — electrical engineering
- **gis** — geographic information systems
- **apple**, **android**, **webapps**, **wordpress**, **magento**, **salesforce**, **sharepoint**, **ethereum**, **bitcoin**, **tex** … and 150+ more.

Pass any slug you like — if the community exists, the Actor will search it.

***

### Use cases in detail

#### 1. Retrieval-Augmented Generation (RAG)

Point the Actor at the topics your users ask about, embed the `combinedMarkdown` (or `answersMarkdown`) fields, and store them in your vector database of choice (Pinecone, Weaviate, pgvector, Qdrant, Chroma…). Now your assistant answers coding questions from real, community-vetted solutions — with citations, because every record carries its `url`.

Because you control `sort` and `acceptedOnly`, you can bias your knowledge base toward **high-quality, accepted** answers and filter out noise.

#### 2. AI agents & tools (MCP)

This Actor is callable from AI agents through the Apify MCP (Model Context Protocol) server. Wire it into Claude, ChatGPT, or your own agent framework and let the model **look things up on demand**: "search Stack Overflow for how to stream OpenAI responses in Node" → clean Markdown answer with runnable code, returned in seconds.

#### 3. Fine-tuning & evaluation datasets

Harvest accepted, high-score answers across any community to build instruction→answer training pairs, or curate a benchmark of "hard" questions with known-good solutions. The score, view count, and accepted flag let you weight and filter examples by quality.

#### 4. Developer productivity & internal search

Mirror the Q\&A your team relies on into your own docs portal or internal search, in Markdown you can render anywhere. Keep an offline, embeddable copy of the answers that matter to your stack.

#### 5. Trend & topic research

Sort by `creation` or `activity` to see what's being asked **right now** about a framework, an error message, or a library — with engagement metrics attached.

***

### How to use it

1. Click **Try for free**.
2. Enter a `query` (and optionally a `site`, `tags`, and how many answers you want).
3. Click **Start**.
4. Grab your results as **JSON, CSV, Excel, or Markdown** from the dataset, or via the Apify API.

Runs typically finish in seconds. A 100-question run with 3 answers each completes in well under a minute.

***

### Calling from the API

```bash
curl -X POST "https://api.apify.com/v2/acts/YOUR_ACTOR_ID/runs?token=YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "query": "how to cancel a fetch request",
    "site": "stackoverflow",
    "answersPerQuestion": 3,
    "maxItems": 100
  }'
```

Then fetch the dataset:

```bash
curl "https://api.apify.com/v2/acts/YOUR_ACTOR_ID/runs/last/dataset/items?token=YOUR_APIFY_TOKEN&format=json"
```

You can also request `format=csv` or push the data straight into your own pipeline with Apify integrations (webhooks, Zapier, Make, Airbyte, and more).

***

### Quota & the optional API key

Out of the box the Actor works with **no key and no signup** — perfect for quick lookups and moderate volumes. The public knowledge source allows a limited number of requests per day per IP.

If you need to run large or frequent jobs, grab a **free** key (it takes a minute, no payment) and paste it into the `apiKey` field. This raises the daily request allowance dramatically. One request covers up to 100 questions, so even the free tier goes a long way.

**Tips to stay within limits:**

- Keep `answersPerQuestion` modest (3–5 is plenty for RAG).
- Use `acceptedOnly` to skip low-value questions.
- Cache results — the same query returns stable IDs, so you can deduplicate on `questionId`.

***

### Output formats

Every run produces a dataset you can export as:

- **JSON** / **JSON Lines** — for pipelines and code.
- **CSV** / **Excel** — for spreadsheets and analysts.
- **Markdown** — the `combinedMarkdown` field is already Markdown, so a single-column export gives you ready-to-read documents.
- **HTML table** / **RSS** — for quick browsing.

***

### Frequently asked questions

**Does it return the full answer text?**
Yes. With `answersPerQuestion > 0` you get the complete body of each of the top answers, converted to Markdown, accepted answer first.

**Are code snippets preserved?**
Yes — code blocks are kept as fenced Markdown with language hints where available, so nothing gets mangled.

**Can I get just the questions, without answers?**
Set `answersPerQuestion` to `0`. You'll get titles, bodies, scores, tags, and metadata only — great for topic mining.

**Can I search by tag only?**
Yes. Leave `query` empty and set `tags`. You can also combine both for precise results.

**Which is the best field for RAG?**
`combinedMarkdown` for a self-contained document per question, or `answersMarkdown` if you only want the solutions. Both embed cleanly.

**How fresh is the data?**
It's pulled live at run time, so you always get the current scores, answers, and view counts.

**Can an AI agent call this automatically?**
Yes — it's exposed through Apify's MCP server, so agents can invoke it as a tool and receive Markdown back.

**How do I avoid duplicates across runs?**
Deduplicate on `questionId`, which is stable over time.

***

### Tips for great RAG results

- **Chunk by answer.** The `answersMarkdown` field is already split into `### Answer N` sections — a natural chunk boundary for embeddings.
- **Keep the URL.** Store `url` alongside each embedding so your assistant can cite its source.
- **Prefer accepted + high score.** Set `acceptedOnly: true` and `sort: "votes"` to bias toward the best content.
- **Mind your context window.** Very popular questions (like canonical "101" posts) can be long; trim `answersPerQuestion` if you're tight on tokens.
- **Combine sites.** Run the Actor once per relevant community (e.g. `stackoverflow` + `dba` + `serverfault`) and merge the datasets for broad coverage.

***

### Legal & responsible use

This Actor retrieves publicly available questions and answers for indexing, research, and AI-grounding purposes. Content on Stack Exchange is contributed by its community and licensed under Creative Commons; **attribution is required** when you republish it. Keep the `url` and `owner` fields with your data so authors are credited, and review the relevant terms before redistributing content publicly. Use the Actor responsibly and at reasonable volumes.

***

### Support

Found a rough edge or want another field exposed? Open an issue from the Actor's page and it'll be looked at. Happy building — and may your context windows always be full of accepted answers.

# Actor input Schema

## `query` (type: `string`):

What to search for, for example "async await forEach", "pandas merge", or "nginx reverse proxy". Leave empty to get a ready-made mix of the most popular, highest-voted Q\&A across topics.

## `site` (type: `string`):

Which Stack Exchange community to pull Q\&A from. Pick from the list, or use the advanced "Custom site" box below for any other community.

## `siteCustom` (type: `string`):

Optional. Any other Stack Exchange site slug not in the list above, for example "physics", "tex", "blender", or "scifi". When set, this overrides the Site choice.

## `tags` (type: `array`):

Optional. Narrow results to one or more tags, for example \["python", "pandas"]. Combined with your search terms.

## `sort` (type: `string`):

How to rank the questions you get back.

## `answersPerQuestion` (type: `integer`):

How many top answers to include per question (the accepted answer is always first). Set to 0 to get the question only.

## `acceptedOnly` (type: `boolean`):

Keep only questions that already have an accepted answer.

## `maxItems` (type: `integer`):

Maximum number of questions to return. Use 0 for no limit.

## `apiKey` (type: `string`):

Optional. A free Stack Apps key raises your daily quota (10,000/day vs 300/day). Not needed for normal use. Get one at stackapps.com/apps/oauth/register.

## `proxyConfiguration` (type: `object`):

Apify Proxy settings. This source is fast and open, so the proxy is off by default.

## Actor input object example

```json
{
  "query": "async await forEach",
  "site": "stackoverflow",
  "tags": [],
  "sort": "relevance",
  "answersPerQuestion": 3,
  "acceptedOnly": false,
  "maxItems": 100,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `questionId` (type: `string`):

Stack Exchange question id

## `title` (type: `string`):

Question title

## `url` (type: `string`):

Question URL

## `score` (type: `string`):

Question score

## `tags` (type: `string`):

Tags

## `isAnswered` (type: `string`):

Has an accepted answer

## `answerCount` (type: `string`):

Total answer count

## `viewCount` (type: `string`):

View count

## `creationDate` (type: `string`):

Creation date

## `owner` (type: `string`):

Question author

## `questionMarkdown` (type: `string`):

Question body as Markdown

## `answersMarkdown` (type: `string`):

Top answers as Markdown (accepted first)

## `combinedMarkdown` (type: `string`):

Full Q\&A as one RAG-ready Markdown block

## `scrapedAt` (type: `string`):

Extraction timestamp

# 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 = {
    "query": "async await forEach",
    "tags": [],
    "answersPerQuestion": 3,
    "maxItems": 100
};

// Run the Actor and wait for it to finish
const run = await client.actor("haketa/stackexchange-rag").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 = {
    "query": "async await forEach",
    "tags": [],
    "answersPerQuestion": 3,
    "maxItems": 100,
}

# Run the Actor and wait for it to finish
run = client.actor("haketa/stackexchange-rag").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 '{
  "query": "async await forEach",
  "tags": [],
  "answersPerQuestion": 3,
  "maxItems": 100
}' |
apify call haketa/stackexchange-rag --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Stack Overflow & Stack Exchange to Markdown for AI / RAG",
        "description": "Turn Stack Overflow & Stack Exchange Q&A into clean, RAG-ready Markdown for AI agents, LLMs and vector databases. Search 180+ sites by keyword or tag and get questions with accepted & top-voted answers as code-block-preserving Markdown — scores, tags, links and MCP support included.",
        "version": "0.1",
        "x-build-id": "VycaQdmZDhnGcnFyy"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/haketa~stackexchange-rag/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-haketa-stackexchange-rag",
                "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/haketa~stackexchange-rag/runs": {
            "post": {
                "operationId": "runs-sync-haketa-stackexchange-rag",
                "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/haketa~stackexchange-rag/run-sync": {
            "post": {
                "operationId": "run-sync-haketa-stackexchange-rag",
                "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": {
                    "query": {
                        "title": "Search terms",
                        "type": "string",
                        "description": "What to search for, for example \"async await forEach\", \"pandas merge\", or \"nginx reverse proxy\". Leave empty to get a ready-made mix of the most popular, highest-voted Q&A across topics."
                    },
                    "site": {
                        "title": "Site",
                        "enum": [
                            "stackoverflow",
                            "serverfault",
                            "superuser",
                            "askubuntu",
                            "softwareengineering",
                            "dba",
                            "unix",
                            "security",
                            "math",
                            "stats",
                            "datascience",
                            "ai",
                            "codereview",
                            "gis",
                            "apple",
                            "android",
                            "webmasters",
                            "wordpress",
                            "magento",
                            "salesforce",
                            "sharepoint",
                            "electronics",
                            "gamedev",
                            "gaming",
                            "ux",
                            "english",
                            "money",
                            "law"
                        ],
                        "type": "string",
                        "description": "Which Stack Exchange community to pull Q&A from. Pick from the list, or use the advanced \"Custom site\" box below for any other community.",
                        "default": "stackoverflow"
                    },
                    "siteCustom": {
                        "title": "Custom site (advanced)",
                        "type": "string",
                        "description": "Optional. Any other Stack Exchange site slug not in the list above, for example \"physics\", \"tex\", \"blender\", or \"scifi\". When set, this overrides the Site choice."
                    },
                    "tags": {
                        "title": "Tags",
                        "type": "array",
                        "description": "Optional. Narrow results to one or more tags, for example [\"python\", \"pandas\"]. Combined with your search terms.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "sort": {
                        "title": "Sort by",
                        "enum": [
                            "relevance",
                            "votes",
                            "activity",
                            "creation"
                        ],
                        "type": "string",
                        "description": "How to rank the questions you get back.",
                        "default": "relevance"
                    },
                    "answersPerQuestion": {
                        "title": "Answers per question",
                        "minimum": 0,
                        "type": "integer",
                        "description": "How many top answers to include per question (the accepted answer is always first). Set to 0 to get the question only.",
                        "default": 3
                    },
                    "acceptedOnly": {
                        "title": "Answered questions only",
                        "type": "boolean",
                        "description": "Keep only questions that already have an accepted answer.",
                        "default": false
                    },
                    "maxItems": {
                        "title": "Max questions",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Maximum number of questions to return. Use 0 for no limit.",
                        "default": 100
                    },
                    "apiKey": {
                        "title": "Stack Exchange API key (optional)",
                        "type": "string",
                        "description": "Optional. A free Stack Apps key raises your daily quota (10,000/day vs 300/day). Not needed for normal use. Get one at stackapps.com/apps/oauth/register."
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Apify Proxy settings. This source is fast and open, so the proxy is off by default.",
                        "default": {
                            "useApifyProxy": false
                        }
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
