# Stack Exchange

> Read the whole Stack Exchange network (Stack Overflow, Server Fault, Ask Ubuntu, Super User and 180 more sites) from one connection. Search questions and answers, watch a tag for new questions, follow what is said about your product, look up a person's reputation, badges and best work, browse tags, collectives and moderators, and read any post, comment, revision or timeline by id.

App · Publishing & Community · 65 actions. Web page: https://docs.lodol.com/docs/integrations/stack-exchange

## Actions

### Find recent questions

Find questions asked inside a window that moves with the clock (the last hour, day, week or month, counted from the moment the step runs), newest first. This is the one to put on a schedule: a fixed date range would return the same questions on every run and then go empty, while this always looks at what has just been asked. Narrow it by tag to watch a technology you support.

**Inputs**

- Asked within (`within`, text): How far back to look, measured from when the step runs. Defaults to the last 24 hours. One of: `last_hour` (The last hour), `last_24_hours` (The last 24 hours), `last_7_days` (The last 7 days), `last_30_days` (The last 30 days).
- Tagged (`tagged`, text): Only include questions carrying every one of these tags. This is an AND: two tags mean questions that have both, so more than about five will always come back empty. Leave empty for no tag filter.
- Site (`site`, text): Which Stack Exchange site to ask. Defaults to Stack Overflow. The list is fetched from Stack Exchange when the connection is made; use the refresh button if a new site has launched since.
- Results per page (`page_size`, number): How many results to return, 1–100. Defaults to 30. From 1 to 100.
- Page (`page`, number): Which page of results to return, starting at 1. The result says whether there are more. At least 1.
- Include post body (`include_body`, true/false): Fetch the full text of each post as well as its summary. Off by default because bodies are large; turn it on to summarise, search or quote the text. Each result then carries the site's HTML in 'body' and a plain-text rendering in 'body_text'.

**Outputs**

- `from_date` (number)
- `from_date_iso` (text)
- `has_more` (true/false)
- `page` (number)
- `page_size` (number)
- `questions` (list)
- `questions_count` (number)
- `quota_remaining` (number)
- `site` (text)
- `total` (number)
- `within` (text)

**Example output**

```json
{
  "from_date": 1787700000,
  "from_date_iso": "2026-08-25T19:20:00+00:00",
  "has_more": false,
  "page": 1,
  "page_size": 30,
  "questions": [
    {
      "accepted_answer_id": 11227902,
      "answer_count": 25,
      "body": null,
      "body_text": null,
      "bounty_amount": null,
      "bounty_closes_date": null,
      "bounty_closes_date_iso": null,
      "closed_date": null,
      "closed_date_iso": null,
      "closed_reason": null,
      "collectives": [],
      "community_owned_date": null,
      "community_owned_date_iso": null,
      "content_license": "CC BY-SA 4.0",
      "creation_date": 1340805096,
      "creation_date_iso": "2012-06-27T13:51:36+00:00",
      "is_answered": true,
      "last_activity_date": 1775626532,
      "last_activity_date_iso": "2026-04-08T05:35:32+00:00",
      "last_edit_date": 1775626532,
      "last_edit_date_iso": "2026-04-08T05:35:32+00:00",
      "link": "https://stackoverflow.com/questions/11227809/why-is-conditional-processing-of-a-sorted-array-faster",
      "locked_date": null,
      "locked_date_iso": null,
      "owner_account_id": 31692,
      "owner_display_name": "GManNickG",
      "owner_link": "https://stackoverflow.com/users/87234/gmannickg",
      "owner_profile_image": "https://i.sstatic.net/FkjBe.png?s=256",
      "owner_reputation": 507347,
      "owner_user_id": 87234,
      "owner_user_type": "registered",
      "protected_date": 1399067470,
      "protected_date_iso": "2014-05-02T21:51:10+00:00",
      "question_id": 11227809,
      "score": 27546,
      "tags": [
        "java",
        "c++",
        "performance",
        "cpu-architecture",
        "branch-prediction"
      ],
      "title": "Why is conditional processing of a sorted array faster than of an unsorted array?",
      "view_count": 1997358
    }
  ],
  "questions_count": 1,
  "quota_remaining": 9987,
  "site": "stackoverflow",
  "total": 482,
  "within": "last_24_hours"
}
```

### Find similar questions

Give a title as if you were about to ask it, and get back the questions a site would suggest as possible duplicates: the same check the ask page runs while you type. Use it to answer a support ticket with an existing thread, or to see whether something has already been asked before writing it up.

**Inputs**

- Hypothetical title (`title`, text, required): The title to find matches for, written as a question would be.
- Preferred tags (`tagged`, text): Tags to prefer. This is a hint, not a filter: results are not guaranteed to carry them.
- Excluded tags (`not_tagged`, text): Tags to rule out. Unlike the preferred tags, this is a hard requirement.
- Site (`site`, text): Which Stack Exchange site to ask. Defaults to Stack Overflow. The list is fetched from Stack Exchange when the connection is made; use the refresh button if a new site has launched since.
- Sort by (`sort`, text): How to order the results. Defaults to last activity. The minimum and maximum below bound whichever field this sorts by, which is why there is a value pair and a date pair: use the one that matches the sort chosen here. Sorts marked (no range) order by a formula rather than a field, so they cannot be narrowed with the minimum and maximum below. One of: `activity` (Last activity), `creation` (Creation date), `votes` (Score), `relevance` (How similar (no range)).
- Order (`order`, text): Which end of the sort to start from. Defaults to descending. One of: `desc` (Descending: highest or newest first), `asc` (Ascending: lowest or oldest first).
- Created on or after (`from_date`, date): Only include things created on or after this date. Leave empty for no lower bound.
- Created on or before (`to_date`, date): Only include things created on or before this date. Leave empty for no upper bound.
- Minimum value (`min_value`, number): Lower bound on the field the sort orders by, when that field is a number: a score for the score sort, a reputation for the reputation sort. Use the date bounds instead when sorting by a date.
- Maximum value (`max_value`, number): Upper bound on the field the sort orders by, when that field is a number. Use the date bounds instead when sorting by a date.
- Minimum date (`min_date`, date): Lower bound on the field the sort orders by, when that field is a date: last activity for the activity sort, for instance. Use the value bounds instead when sorting by a number.
- Maximum date (`max_date`, date): Upper bound on the field the sort orders by, when that field is a date. Use the value bounds instead when sorting by a number.
- Results per page (`page_size`, number): How many results to return, 1–100. Defaults to 30. From 1 to 100.
- Page (`page`, number): Which page of results to return, starting at 1. The result says whether there are more. At least 1.
- Include post body (`include_body`, true/false): Fetch the full text of each post as well as its summary. Off by default because bodies are large; turn it on to summarise, search or quote the text. Each result then carries the site's HTML in 'body' and a plain-text rendering in 'body_text'.

**Outputs**

- `has_more` (true/false)
- `page` (number)
- `page_size` (number)
- `questions` (list)
- `questions_count` (number)
- `quota_remaining` (number)
- `site` (text)
- `title` (text)
- `total` (number)

**Example output**

```json
{
  "has_more": false,
  "page": 1,
  "page_size": 30,
  "questions": [
    {
      "accepted_answer_id": 11227902,
      "answer_count": 25,
      "body": null,
      "body_text": null,
      "bounty_amount": null,
      "bounty_closes_date": null,
      "bounty_closes_date_iso": null,
      "closed_date": null,
      "closed_date_iso": null,
      "closed_reason": null,
      "collectives": [],
      "community_owned_date": null,
      "community_owned_date_iso": null,
      "content_license": "CC BY-SA 4.0",
      "creation_date": 1340805096,
      "creation_date_iso": "2012-06-27T13:51:36+00:00",
      "is_answered": true,
      "last_activity_date": 1775626532,
      "last_activity_date_iso": "2026-04-08T05:35:32+00:00",
      "last_edit_date": 1775626532,
      "last_edit_date_iso": "2026-04-08T05:35:32+00:00",
      "link": "https://stackoverflow.com/questions/11227809/why-is-conditional-processing-of-a-sorted-array-faster",
      "locked_date": null,
      "locked_date_iso": null,
      "owner_account_id": 31692,
      "owner_display_name": "GManNickG",
      "owner_link": "https://stackoverflow.com/users/87234/gmannickg",
      "owner_profile_image": "https://i.sstatic.net/FkjBe.png?s=256",
      "owner_reputation": 507347,
      "owner_user_id": 87234,
      "owner_user_type": "registered",
      "protected_date": 1399067470,
      "protected_date_iso": "2014-05-02T21:51:10+00:00",
      "question_id": 11227809,
      "score": 27546,
      "tags": [
        "java",
        "c++",
        "performance",
        "cpu-architecture",
        "branch-prediction"
      ],
      "title": "Why is conditional processing of a sorted array faster than of an unsorted array?",
      "view_count": 1997358
    }
  ],
  "questions_count": 1,
  "quota_remaining": 9987,
  "site": "stackoverflow",
  "title": "How do I sort a dictionary by value?",
  "total": 30
}
```

### Get a collective's answers

Get the answers posted in a collective, newest activity first: what a vendor's community is actually telling people.

**Inputs**

- Collectives (`slugs`, text, required): Which collectives to read. The list is fetched from the chosen site; change the site above and refresh to see that site's collectives.
- Site (`site`, text): Which Stack Exchange site to ask. Defaults to Stack Overflow. The list is fetched from Stack Exchange when the connection is made; use the refresh button if a new site has launched since.
- Sort by (`sort`, text): How to order the results. Defaults to last activity. The minimum and maximum below bound whichever field this sorts by, which is why there is a value pair and a date pair: use the one that matches the sort chosen here. One of: `activity` (Last activity), `creation` (Creation date), `votes` (Score).
- Order (`order`, text): Which end of the sort to start from. Defaults to descending. One of: `desc` (Descending: highest or newest first), `asc` (Ascending: lowest or oldest first).
- Created on or after (`from_date`, date): Only include things created on or after this date. Leave empty for no lower bound.
- Created on or before (`to_date`, date): Only include things created on or before this date. Leave empty for no upper bound.
- Minimum value (`min_value`, number): Lower bound on the field the sort orders by, when that field is a number: a score for the score sort, a reputation for the reputation sort. Use the date bounds instead when sorting by a date.
- Maximum value (`max_value`, number): Upper bound on the field the sort orders by, when that field is a number. Use the date bounds instead when sorting by a date.
- Minimum date (`min_date`, date): Lower bound on the field the sort orders by, when that field is a date: last activity for the activity sort, for instance. Use the value bounds instead when sorting by a number.
- Maximum date (`max_date`, date): Upper bound on the field the sort orders by, when that field is a date. Use the value bounds instead when sorting by a number.
- Results per page (`page_size`, number): How many results to return, 1–100. Defaults to 30. From 1 to 100.
- Page (`page`, number): Which page of results to return, starting at 1. The result says whether there are more. At least 1.
- Include post body (`include_body`, true/false): Fetch the full text of each post as well as its summary. Off by default because bodies are large; turn it on to summarise, search or quote the text. Each result then carries the site's HTML in 'body' and a plain-text rendering in 'body_text'.

**Outputs**

- `answers` (list)
- `answers_count` (number)
- `has_more` (true/false)
- `page` (number)
- `page_size` (number)
- `quota_remaining` (number)
- `site` (text)
- `slugs` (text)
- `total` (number)

**Example output**

```json
{
  "answers": [
    {
      "answer_id": 11227902,
      "body": null,
      "body_text": null,
      "collectives": [],
      "community_owned_date": null,
      "community_owned_date_iso": null,
      "content_license": "CC BY-SA 4.0",
      "creation_date": 1340805402,
      "creation_date_iso": "2012-06-27T13:56:42+00:00",
      "is_accepted": true,
      "last_activity_date": 1709573833,
      "last_activity_date_iso": "2024-03-04T17:37:13+00:00",
      "last_edit_date": 1709573833,
      "last_edit_date_iso": "2024-03-04T17:37:13+00:00",
      "link": null,
      "locked_date": null,
      "locked_date_iso": null,
      "owner_account_id": 559988,
      "owner_display_name": "Mysticial",
      "owner_link": "https://stackoverflow.com/users/922184/mysticial",
      "owner_profile_image": "https://i.sstatic.net/h7WDB.jpg?s=256",
      "owner_reputation": 473493,
      "owner_user_id": 922184,
      "owner_user_type": "registered",
      "question_id": 11227809,
      "score": 35296,
      "title": null
    }
  ],
  "answers_count": 1,
  "has_more": false,
  "page": 1,
  "page_size": 30,
  "quota_remaining": 9987,
  "site": "stackoverflow",
  "slugs": "mobile-dev",
  "total": 52931
}
```

### Get a collective's members

Get a collective's members: the recognised members and admins behind a vendor's community, with their reputation and badges.

**Inputs**

- Collectives (`slugs`, text, required): Which collectives to read. The list is fetched from the chosen site; change the site above and refresh to see that site's collectives.
- Site (`site`, text): Which Stack Exchange site to ask. Defaults to Stack Overflow. The list is fetched from Stack Exchange when the connection is made; use the refresh button if a new site has launched since.
- Sort by (`sort`, text): How to order the results. Defaults to reputation. The minimum and maximum below bound whichever field this sorts by, which is why there is a value pair and a date pair: use the one that matches the sort chosen here. One of: `reputation`, `creation` (Creation date), `name`, `modified` (Last modified).
- Order (`order`, text): Which end of the sort to start from. Defaults to descending. One of: `desc` (Descending: highest or newest first), `asc` (Ascending: lowest or oldest first).
- Created on or after (`from_date`, date): Only include things created on or after this date. Leave empty for no lower bound.
- Created on or before (`to_date`, date): Only include things created on or before this date. Leave empty for no upper bound.
- Minimum value (`min_value`, number): Lower bound on the field the sort orders by, when that field is a number: a score for the score sort, a reputation for the reputation sort. Use the date bounds instead when sorting by a date.
- Maximum value (`max_value`, number): Upper bound on the field the sort orders by, when that field is a number. Use the date bounds instead when sorting by a date.
- Minimum date (`min_date`, date): Lower bound on the field the sort orders by, when that field is a date: last activity for the activity sort, for instance. Use the value bounds instead when sorting by a number.
- Maximum date (`max_date`, date): Upper bound on the field the sort orders by, when that field is a date. Use the value bounds instead when sorting by a number.
- Results per page (`page_size`, number): How many results to return, 1–100. Defaults to 30. From 1 to 100.
- Page (`page`, number): Which page of results to return, starting at 1. The result says whether there are more. At least 1.

**Outputs**

- `has_more` (true/false)
- `page` (number)
- `page_size` (number)
- `quota_remaining` (number)
- `site` (text)
- `slugs` (text)
- `total` (number)
- `users` (list)
- `users_count` (number)

**Example output**

```json
{
  "has_more": false,
  "page": 1,
  "page_size": 30,
  "quota_remaining": 9987,
  "site": "stackoverflow",
  "slugs": "mobile-dev",
  "total": 63,
  "users": [
    {
      "about_me": null,
      "accept_rate": 86,
      "account_id": 11683,
      "bronze_badges": 9360,
      "collectives": [
        "Google Cloud"
      ],
      "creation_date": 1222430705,
      "creation_date_iso": "2008-09-26T12:05:05+00:00",
      "display_name": "Jon Skeet",
      "gold_badges": 895,
      "is_employee": false,
      "last_access_date": 1787770005,
      "last_access_date_iso": "2026-08-26T18:46:45+00:00",
      "last_modified_date": 1787447403,
      "last_modified_date_iso": "2026-08-23T01:10:03+00:00",
      "link": "https://stackoverflow.com/users/22656/jon-skeet",
      "location": "Reading, United Kingdom",
      "profile_image": "https://www.gravatar.com/avatar/6d8ebb117e8d83d74ea95fbdd0f87e13?s=256",
      "reputation": 1529430,
      "reputation_change_day": 10,
      "reputation_change_month": 448,
      "reputation_change_quarter": 1090,
      "reputation_change_week": 50,
      "reputation_change_year": 7616,
      "silver_badges": 9321,
      "timed_penalty_date": null,
      "timed_penalty_date_iso": null,
      "user_id": 22656,
      "user_type": "registered",
      "website_url": "http://csharpindepth.com"
    }
  ],
  "users_count": 1
}
```

### Get a collective's questions

Get the questions posted in a collective. If you run one, this is the feed to watch: everything asked about your product in the place your team is expected to answer it.

**Inputs**

- Collectives (`slugs`, text, required): Which collectives to read. The list is fetched from the chosen site; change the site above and refresh to see that site's collectives.
- Site (`site`, text): Which Stack Exchange site to ask. Defaults to Stack Overflow. The list is fetched from Stack Exchange when the connection is made; use the refresh button if a new site has launched since.
- Sort by (`sort`, text): How to order the results. Defaults to last activity. The minimum and maximum below bound whichever field this sorts by, which is why there is a value pair and a date pair: use the one that matches the sort chosen here. One of: `activity` (Last activity), `creation` (Creation date), `votes` (Score).
- Order (`order`, text): Which end of the sort to start from. Defaults to descending. One of: `desc` (Descending: highest or newest first), `asc` (Ascending: lowest or oldest first).
- Created on or after (`from_date`, date): Only include things created on or after this date. Leave empty for no lower bound.
- Created on or before (`to_date`, date): Only include things created on or before this date. Leave empty for no upper bound.
- Minimum value (`min_value`, number): Lower bound on the field the sort orders by, when that field is a number: a score for the score sort, a reputation for the reputation sort. Use the date bounds instead when sorting by a date.
- Maximum value (`max_value`, number): Upper bound on the field the sort orders by, when that field is a number. Use the date bounds instead when sorting by a date.
- Minimum date (`min_date`, date): Lower bound on the field the sort orders by, when that field is a date: last activity for the activity sort, for instance. Use the value bounds instead when sorting by a number.
- Maximum date (`max_date`, date): Upper bound on the field the sort orders by, when that field is a date. Use the value bounds instead when sorting by a number.
- Results per page (`page_size`, number): How many results to return, 1–100. Defaults to 30. From 1 to 100.
- Page (`page`, number): Which page of results to return, starting at 1. The result says whether there are more. At least 1.
- Include post body (`include_body`, true/false): Fetch the full text of each post as well as its summary. Off by default because bodies are large; turn it on to summarise, search or quote the text. Each result then carries the site's HTML in 'body' and a plain-text rendering in 'body_text'.

**Outputs**

- `has_more` (true/false)
- `page` (number)
- `page_size` (number)
- `questions` (list)
- `questions_count` (number)
- `quota_remaining` (number)
- `site` (text)
- `slugs` (text)
- `total` (number)

**Example output**

```json
{
  "has_more": false,
  "page": 1,
  "page_size": 30,
  "questions": [
    {
      "accepted_answer_id": 11227902,
      "answer_count": 25,
      "body": null,
      "body_text": null,
      "bounty_amount": null,
      "bounty_closes_date": null,
      "bounty_closes_date_iso": null,
      "closed_date": null,
      "closed_date_iso": null,
      "closed_reason": null,
      "collectives": [],
      "community_owned_date": null,
      "community_owned_date_iso": null,
      "content_license": "CC BY-SA 4.0",
      "creation_date": 1340805096,
      "creation_date_iso": "2012-06-27T13:51:36+00:00",
      "is_answered": true,
      "last_activity_date": 1775626532,
      "last_activity_date_iso": "2026-04-08T05:35:32+00:00",
      "last_edit_date": 1775626532,
      "last_edit_date_iso": "2026-04-08T05:35:32+00:00",
      "link": "https://stackoverflow.com/questions/11227809/why-is-conditional-processing-of-a-sorted-array-faster",
      "locked_date": null,
      "locked_date_iso": null,
      "owner_account_id": 31692,
      "owner_display_name": "GManNickG",
      "owner_link": "https://stackoverflow.com/users/87234/gmannickg",
      "owner_profile_image": "https://i.sstatic.net/FkjBe.png?s=256",
      "owner_reputation": 507347,
      "owner_user_id": 87234,
      "owner_user_type": "registered",
      "protected_date": 1399067470,
      "protected_date_iso": "2014-05-02T21:51:10+00:00",
      "question_id": 11227809,
      "score": 27546,
      "tags": [
        "java",
        "c++",
        "performance",
        "cpu-architecture",
        "branch-prediction"
      ],
      "title": "Why is conditional processing of a sorted array faster than of an unsorted array?",
      "view_count": 1997358
    }
  ],
  "questions_count": 1,
  "quota_remaining": 9987,
  "site": "stackoverflow",
  "slugs": "mobile-dev",
  "total": 41285
}
```

### Get a collective's tags

Get the tags a collective covers, with each one's question count: the shape of what a vendor's community is being asked about.

**Inputs**

- Collectives (`slugs`, text, required): Which collectives to read. The list is fetched from the chosen site; change the site above and refresh to see that site's collectives.
- Site (`site`, text): Which Stack Exchange site to ask. Defaults to Stack Overflow. The list is fetched from Stack Exchange when the connection is made; use the refresh button if a new site has launched since.
- Sort by (`sort`, text): How to order the results. Defaults to number of questions. The minimum and maximum below bound whichever field this sorts by, which is why there is a value pair and a date pair: use the one that matches the sort chosen here. One of: `popular` (Number of questions), `activity` (Last activity), `name`.
- Order (`order`, text): Which end of the sort to start from. Defaults to descending. One of: `desc` (Descending: highest or newest first), `asc` (Ascending: lowest or oldest first).
- Created on or after (`from_date`, date): Only include things created on or after this date. Leave empty for no lower bound.
- Created on or before (`to_date`, date): Only include things created on or before this date. Leave empty for no upper bound.
- Minimum value (`min_value`, number): Lower bound on the field the sort orders by, when that field is a number: a score for the score sort, a reputation for the reputation sort. Use the date bounds instead when sorting by a date.
- Maximum value (`max_value`, number): Upper bound on the field the sort orders by, when that field is a number. Use the date bounds instead when sorting by a date.
- Minimum date (`min_date`, date): Lower bound on the field the sort orders by, when that field is a date: last activity for the activity sort, for instance. Use the value bounds instead when sorting by a number.
- Maximum date (`max_date`, date): Upper bound on the field the sort orders by, when that field is a date. Use the value bounds instead when sorting by a number.
- Results per page (`page_size`, number): How many results to return, 1–100. Defaults to 30. From 1 to 100.
- Page (`page`, number): Which page of results to return, starting at 1. The result says whether there are more. At least 1.

**Outputs**

- `has_more` (true/false)
- `page` (number)
- `page_size` (number)
- `quota_remaining` (number)
- `site` (text)
- `slugs` (text)
- `tags` (list)
- `tags_count` (number)
- `total` (number)

**Example output**

```json
{
  "has_more": false,
  "page": 1,
  "page_size": 30,
  "quota_remaining": 9987,
  "site": "stackoverflow",
  "slugs": "mobile-dev",
  "tags": [
    {
      "collectives": [],
      "count": 2204910,
      "has_synonyms": true,
      "is_moderator_only": false,
      "is_required": false,
      "last_activity_date": null,
      "last_activity_date_iso": null,
      "name": "python",
      "synonyms": [],
      "user_id": null
    }
  ],
  "tags_count": 1,
  "total": 64
}
```

### Get a tag's FAQ

Get the questions a tag's community treats as canonical: the ones everything else gets pointed at. This is the shortest route from a technology to the answers worth reading first, and the list to send someone who is new to it.

**Inputs**

- Tags (`tag_names`, text, required): The tags whose FAQ to read, separated by commas.
- Site (`site`, text): Which Stack Exchange site to ask. Defaults to Stack Overflow. The list is fetched from Stack Exchange when the connection is made; use the refresh button if a new site has launched since.
- Results per page (`page_size`, number): How many results to return, 1–100. Defaults to 30. From 1 to 100.
- Page (`page`, number): Which page of results to return, starting at 1. The result says whether there are more. At least 1.
- Include post body (`include_body`, true/false): Fetch the full text of each post as well as its summary. Off by default because bodies are large; turn it on to summarise, search or quote the text. Each result then carries the site's HTML in 'body' and a plain-text rendering in 'body_text'.

**Outputs**

- `has_more` (true/false)
- `page` (number)
- `page_size` (number)
- `questions` (list)
- `questions_count` (number)
- `quota_remaining` (number)
- `site` (text)
- `tag_names` (text)
- `total` (number)

**Example output**

```json
{
  "has_more": false,
  "page": 1,
  "page_size": 30,
  "questions": [
    {
      "accepted_answer_id": 11227902,
      "answer_count": 25,
      "body": null,
      "body_text": null,
      "bounty_amount": null,
      "bounty_closes_date": null,
      "bounty_closes_date_iso": null,
      "closed_date": null,
      "closed_date_iso": null,
      "closed_reason": null,
      "collectives": [],
      "community_owned_date": null,
      "community_owned_date_iso": null,
      "content_license": "CC BY-SA 4.0",
      "creation_date": 1340805096,
      "creation_date_iso": "2012-06-27T13:51:36+00:00",
      "is_answered": true,
      "last_activity_date": 1775626532,
      "last_activity_date_iso": "2026-04-08T05:35:32+00:00",
      "last_edit_date": 1775626532,
      "last_edit_date_iso": "2026-04-08T05:35:32+00:00",
      "link": "https://stackoverflow.com/questions/11227809/why-is-conditional-processing-of-a-sorted-array-faster",
      "locked_date": null,
      "locked_date_iso": null,
      "owner_account_id": 31692,
      "owner_display_name": "GManNickG",
      "owner_link": "https://stackoverflow.com/users/87234/gmannickg",
      "owner_profile_image": "https://i.sstatic.net/FkjBe.png?s=256",
      "owner_reputation": 507347,
      "owner_user_id": 87234,
      "owner_user_type": "registered",
      "protected_date": 1399067470,
      "protected_date_iso": "2014-05-02T21:51:10+00:00",
      "question_id": 11227809,
      "score": 27546,
      "tags": [
        "java",
        "c++",
        "performance",
        "cpu-architecture",
        "branch-prediction"
      ],
      "title": "Why is conditional processing of a sorted array faster than of an unsorted array?",
      "view_count": 1997358
    }
  ],
  "questions_count": 1,
  "quota_remaining": 9987,
  "site": "stackoverflow",
  "tag_names": "python",
  "total": 30
}
```

### Get a tag's top users

Get the people who answer, or ask, best in one tag, with their score and post count on it, over the last month or over all time. This is the 'who should we ask about X' lookup, and the month window is the one that finds who is active now rather than who was in 2012.

**Inputs**

- Tag (`tag_name`, text, required): The single tag to rank within. Unlike the other tag actions, this one takes exactly one.
- Ranked by (`users`, text): Defaults to top answerers. One of: `answerers` (Top answerers), `askers` (Top askers).
- Period (`period`, text): Defaults to all time. One of: `all_time` (All time), `month` (The last month).
- Site (`site`, text): Which Stack Exchange site to ask. Defaults to Stack Overflow. The list is fetched from Stack Exchange when the connection is made; use the refresh button if a new site has launched since.
- Results per page (`page_size`, number): How many results to return, 1–100. Defaults to 30. From 1 to 100.
- Page (`page`, number): Which page of results to return, starting at 1. The result says whether there are more. At least 1.

**Outputs**

- `has_more` (true/false)
- `page` (number)
- `page_size` (number)
- `period` (text)
- `quota_remaining` (number)
- `site` (text)
- `tag_name` (text)
- `total` (number)
- `users` (list)
- `users_count` (number)

**Example output**

```json
{
  "has_more": false,
  "page": 1,
  "page_size": 30,
  "period": "all_time",
  "quota_remaining": 9987,
  "site": "stackoverflow",
  "tag_name": "python",
  "total": 30,
  "users": [
    {
      "post_count": 96,
      "score": 1024,
      "user_account_id": 33482,
      "user_display_name": "Martijn Pieters",
      "user_link": "https://stackoverflow.com/users/100297/martijn-pieters",
      "user_profile_image": "https://i.sstatic.net/6M7Ry.jpg?s=256",
      "user_reputation": 1122154,
      "user_user_id": 100297,
      "user_user_type": "registered"
    }
  ],
  "users_count": 1
}
```

### Get a user's account merges

Get the account ids that were merged into a network account, with the date of each merge. An id that has stopped resolving has usually been merged rather than deleted, and this is what turns the old id into the current one: the fix for a stored id that suddenly returns nothing.

**Inputs**

- Network account IDs (`account_ids`, text, required): The network accounts to read, by their numeric account ids. This is the network-wide id, not a site user id; every user this integration returns carries both, as 'account_id' and 'user_id'. Up to 100 at a time, separated by commas.
- Results per page (`page_size`, number): How many results to return, 1–100. Defaults to 30. From 1 to 100.
- Page (`page`, number): Which page of results to return, starting at 1. The result says whether there are more. At least 1.

**Outputs**

- `account_ids` (text)
- `has_more` (true/false)
- `merges` (list)
- `merges_count` (number)
- `page` (number)
- `page_size` (number)
- `quota_remaining` (number)
- `total` (number)

**Example output**

```json
{
  "account_ids": "11683",
  "has_more": false,
  "merges": [
    {
      "merge_date": 1500000000,
      "merge_date_iso": "2017-07-14T02:40:00+00:00",
      "new_account_id": 11683,
      "old_account_id": 1234567
    }
  ],
  "merges_count": 1,
  "page": 1,
  "page_size": 30,
  "quota_remaining": 9987,
  "total": 1
}
```

### Get a user's accounts across the network

Given a network account id, get every site that person is on, with their reputation, badges and post counts on each. This is how you find someone's Server Fault id starting from their Stack Overflow profile. It takes the network account id ('account_id' on any user result), not a site user id.

**Inputs**

- Network account IDs (`account_ids`, text, required): The network accounts to read, by their numeric account ids. This is the network-wide id, not a site user id; every user this integration returns carries both, as 'account_id' and 'user_id'. Up to 100 at a time, separated by commas.
- Site types (`types`, text): Limit to main sites or their metas. Leave empty for both. One or more of: `main_site` (Main sites), `meta_site` (Meta sites).
- Results per page (`page_size`, number): How many results to return, 1–100. Defaults to 30. From 1 to 100.
- Page (`page`, number): Which page of results to return, starting at 1. The result says whether there are more. At least 1.

**Outputs**

- `account_ids` (text)
- `accounts` (list)
- `accounts_count` (number)
- `has_more` (true/false)
- `page` (number)
- `page_size` (number)
- `quota_remaining` (number)
- `total` (number)
- `types` (list)

**Example output**

```json
{
  "account_ids": "11683",
  "accounts": [
    {
      "account_id": 11683,
      "answer_count": 35097,
      "bronze_badges": 9360,
      "creation_date": 1222430705,
      "creation_date_iso": "2008-09-26T12:05:05+00:00",
      "gold_badges": 895,
      "last_access_date": 1787770005,
      "last_access_date_iso": "2026-08-26T18:46:45+00:00",
      "question_count": 61,
      "reputation": 1529430,
      "silver_badges": 9321,
      "site_name": "Stack Overflow",
      "site_url": "https://stackoverflow.com",
      "user_id": 22656
    }
  ],
  "accounts_count": 1,
  "has_more": false,
  "page": 1,
  "page_size": 30,
  "quota_remaining": 9987,
  "total": 1,
  "types": [
    "main_site"
  ]
}
```

### Get a user's activity across the network

Get one person's posts, badges and comments from every site at once, newest first, each saying which site it came from. Takes the network account id ('account_id' on any user result). This is the one call that answers 'what has this person been up to lately', wherever they have been doing it.

**Inputs**

- Network account ID (`account_id`, number, required): The network account to read. This is the network-wide id ('account_id' on any user result), not a site user id.
- Activity types (`types`, text): Limit to particular kinds of activity. Leave empty for all three. One or more of: `posts`, `badges`, `comments`.
- Created on or after (`from_date`, date): Only include things created on or after this date. Leave empty for no lower bound.
- Created on or before (`to_date`, date): Only include things created on or before this date. Leave empty for no upper bound.
- Results per page (`page_size`, number): How many results to return, 1–100. Defaults to 30. From 1 to 100.
- Page (`page`, number): Which page of results to return, starting at 1. The result says whether there are more. At least 1.

**Outputs**

- `account_id` (number)
- `activity` (list)
- `activity_count` (number)
- `has_more` (true/false)
- `page` (number)
- `page_size` (number)
- `quota_remaining` (number)
- `total` (number)
- `types` (list)

**Example output**

```json
{
  "account_id": 11683,
  "activity": [
    {
      "account_id": 11683,
      "activity_type": "post",
      "badge_id": null,
      "creation_date": 1312208420,
      "creation_date_iso": "2011-08-01T13:00:20+00:00",
      "description": null,
      "link": "https://stackoverflow.com/q/6841333",
      "post_id": 6841333,
      "score": 2571,
      "site": "stackoverflow",
      "tags": [
        "java",
        "date"
      ],
      "title": "Why is subtracting these two times giving a strange result?"
    }
  ],
  "activity_count": 1,
  "has_more": true,
  "page": 1,
  "page_size": 30,
  "quota_remaining": 9987,
  "total": 1,
  "types": [
    "posts"
  ]
}
```

### Get a user's answers

Get the answers one or more users have written. Sorted by score this is their best work; sorted by creation it is what they have just posted.

**Inputs**

- User IDs (`user_ids`, text, required): The users to read, by their numeric ids on this site. A user id is site-specific (the same person has a different one on each site) and appears in their profile URL. Up to 100 at a time, separated by commas.
- Site (`site`, text): Which Stack Exchange site to ask. Defaults to Stack Overflow. The list is fetched from Stack Exchange when the connection is made; use the refresh button if a new site has launched since.
- Sort by (`sort`, text): How to order the results. Defaults to last activity. The minimum and maximum below bound whichever field this sorts by, which is why there is a value pair and a date pair: use the one that matches the sort chosen here. One of: `activity` (Last activity), `creation` (Creation date), `votes` (Score).
- Order (`order`, text): Which end of the sort to start from. Defaults to descending. One of: `desc` (Descending: highest or newest first), `asc` (Ascending: lowest or oldest first).
- Created on or after (`from_date`, date): Only include things created on or after this date. Leave empty for no lower bound.
- Created on or before (`to_date`, date): Only include things created on or before this date. Leave empty for no upper bound.
- Minimum value (`min_value`, number): Lower bound on the field the sort orders by, when that field is a number: a score for the score sort, a reputation for the reputation sort. Use the date bounds instead when sorting by a date.
- Maximum value (`max_value`, number): Upper bound on the field the sort orders by, when that field is a number. Use the date bounds instead when sorting by a date.
- Minimum date (`min_date`, date): Lower bound on the field the sort orders by, when that field is a date: last activity for the activity sort, for instance. Use the value bounds instead when sorting by a number.
- Maximum date (`max_date`, date): Upper bound on the field the sort orders by, when that field is a date. Use the value bounds instead when sorting by a number.
- Results per page (`page_size`, number): How many results to return, 1–100. Defaults to 30. From 1 to 100.
- Page (`page`, number): Which page of results to return, starting at 1. The result says whether there are more. At least 1.
- Include post body (`include_body`, true/false): Fetch the full text of each post as well as its summary. Off by default because bodies are large; turn it on to summarise, search or quote the text. Each result then carries the site's HTML in 'body' and a plain-text rendering in 'body_text'.

**Outputs**

- `answers` (list)
- `answers_count` (number)
- `has_more` (true/false)
- `page` (number)
- `page_size` (number)
- `quota_remaining` (number)
- `site` (text)
- `total` (number)
- `user_ids` (text)

**Example output**

```json
{
  "answers": [
    {
      "answer_id": 11227902,
      "body": null,
      "body_text": null,
      "collectives": [],
      "community_owned_date": null,
      "community_owned_date_iso": null,
      "content_license": "CC BY-SA 4.0",
      "creation_date": 1340805402,
      "creation_date_iso": "2012-06-27T13:56:42+00:00",
      "is_accepted": true,
      "last_activity_date": 1709573833,
      "last_activity_date_iso": "2024-03-04T17:37:13+00:00",
      "last_edit_date": 1709573833,
      "last_edit_date_iso": "2024-03-04T17:37:13+00:00",
      "link": null,
      "locked_date": null,
      "locked_date_iso": null,
      "owner_account_id": 559988,
      "owner_display_name": "Mysticial",
      "owner_link": "https://stackoverflow.com/users/922184/mysticial",
      "owner_profile_image": "https://i.sstatic.net/h7WDB.jpg?s=256",
      "owner_reputation": 473493,
      "owner_user_id": 922184,
      "owner_user_type": "registered",
      "question_id": 11227809,
      "score": 35296,
      "title": null
    }
  ],
  "answers_count": 1,
  "has_more": false,
  "page": 1,
  "page_size": 30,
  "quota_remaining": 9987,
  "site": "stackoverflow",
  "total": 35097,
  "user_ids": "22656"
}
```

### Get a user's badges

Get the badges one or more users have been awarded. Sorted by the date awarded with a date window, this is 'what did they earn this month'.

**Inputs**

- User IDs (`user_ids`, text, required): The users to read, by their numeric ids on this site. A user id is site-specific (the same person has a different one on each site) and appears in their profile URL. Up to 100 at a time, separated by commas.
- Site (`site`, text): Which Stack Exchange site to ask. Defaults to Stack Overflow. The list is fetched from Stack Exchange when the connection is made; use the refresh button if a new site has launched since.
- Sort by (`sort`, text): How to order the results. Defaults to rank: gold, silver, bronze. The minimum and maximum below bound whichever field this sorts by, which is why there is a value pair and a date pair: use the one that matches the sort chosen here. One of: `rank` (Rank: gold, silver, bronze), `name`, `type` (Badge type), `awarded` (Date awarded).
- Order (`order`, text): Which end of the sort to start from. Defaults to descending. One of: `desc` (Descending: highest or newest first), `asc` (Ascending: lowest or oldest first).
- Created on or after (`from_date`, date): Only include things created on or after this date. Leave empty for no lower bound.
- Created on or before (`to_date`, date): Only include things created on or before this date. Leave empty for no upper bound.
- Minimum date (`min_date`, date): Lower bound on the field the sort orders by, when that field is a date: last activity for the activity sort, for instance. Use the value bounds instead when sorting by a number.
- Maximum date (`max_date`, date): Upper bound on the field the sort orders by, when that field is a date. Use the value bounds instead when sorting by a number.
- Results per page (`page_size`, number): How many results to return, 1–100. Defaults to 30. From 1 to 100.
- Page (`page`, number): Which page of results to return, starting at 1. The result says whether there are more. At least 1.

**Outputs**

- `badges` (list)
- `badges_count` (number)
- `has_more` (true/false)
- `page` (number)
- `page_size` (number)
- `quota_remaining` (number)
- `site` (text)
- `total` (number)
- `user_ids` (text)

**Example output**

```json
{
  "badges": [
    {
      "award_count": 1288401,
      "badge_id": 17,
      "badge_type": "named",
      "description": null,
      "link": "https://stackoverflow.com/badges/17/nice-answer",
      "name": "Nice Answer",
      "rank": "bronze",
      "user_account_id": null,
      "user_display_name": null,
      "user_link": null,
      "user_profile_image": null,
      "user_reputation": null,
      "user_user_id": null,
      "user_user_type": null
    }
  ],
  "badges_count": 1,
  "has_more": false,
  "page": 1,
  "page_size": 30,
  "quota_remaining": 9987,
  "site": "stackoverflow",
  "total": 19576,
  "user_ids": "22656"
}
```

### Get a user's best posts in tags

Get one user's highest-scoring answers, or questions, within particular tags: 'show me their best Python answers'. This is the evidence behind a claim of expertise, and it is what turns a name into something you can actually read.

**Inputs**

- User ID (`user_id`, number, required): The user to read, by their numeric id on this site. It appears in their profile URL.
- In tags (`tags`, text, required): The tags to look within. Separate several with commas.
- Posts (`posts`, text): Which kind of post to rank. Defaults to answers. One of: `answers` (Their answers), `questions` (Their questions).
- Site (`site`, text): Which Stack Exchange site to ask. Defaults to Stack Overflow. The list is fetched from Stack Exchange when the connection is made; use the refresh button if a new site has launched since.
- Sort by (`sort`, text): How to order the results. Defaults to last activity. The minimum and maximum below bound whichever field this sorts by, which is why there is a value pair and a date pair: use the one that matches the sort chosen here. One of: `activity` (Last activity), `creation` (Creation date), `votes` (Score).
- Order (`order`, text): Which end of the sort to start from. Defaults to descending. One of: `desc` (Descending: highest or newest first), `asc` (Ascending: lowest or oldest first).
- Created on or after (`from_date`, date): Only include things created on or after this date. Leave empty for no lower bound.
- Created on or before (`to_date`, date): Only include things created on or before this date. Leave empty for no upper bound.
- Minimum value (`min_value`, number): Lower bound on the field the sort orders by, when that field is a number: a score for the score sort, a reputation for the reputation sort. Use the date bounds instead when sorting by a date.
- Maximum value (`max_value`, number): Upper bound on the field the sort orders by, when that field is a number. Use the date bounds instead when sorting by a date.
- Minimum date (`min_date`, date): Lower bound on the field the sort orders by, when that field is a date: last activity for the activity sort, for instance. Use the value bounds instead when sorting by a number.
- Maximum date (`max_date`, date): Upper bound on the field the sort orders by, when that field is a date. Use the value bounds instead when sorting by a number.
- Results per page (`page_size`, number): How many results to return, 1–100. Defaults to 30. From 1 to 100.
- Page (`page`, number): Which page of results to return, starting at 1. The result says whether there are more. At least 1.
- Include post body (`include_body`, true/false): Fetch the full text of each post as well as its summary. Off by default because bodies are large; turn it on to summarise, search or quote the text. Each result then carries the site's HTML in 'body' and a plain-text rendering in 'body_text'.

**Outputs**

- `answers` (list)
- `answers_count` (number)
- `has_more` (true/false)
- `page` (number)
- `page_size` (number)
- `posts` (text)
- `questions` (list)
- `questions_count` (number)
- `quota_remaining` (number)
- `site` (text)
- `tags` (text)
- `total` (number)
- `user_id` (number)

**Example output**

```json
{
  "answers": [
    {
      "answer_id": 11227902,
      "body": null,
      "body_text": null,
      "collectives": [],
      "community_owned_date": null,
      "community_owned_date_iso": null,
      "content_license": "CC BY-SA 4.0",
      "creation_date": 1340805402,
      "creation_date_iso": "2012-06-27T13:56:42+00:00",
      "is_accepted": true,
      "last_activity_date": 1709573833,
      "last_activity_date_iso": "2024-03-04T17:37:13+00:00",
      "last_edit_date": 1709573833,
      "last_edit_date_iso": "2024-03-04T17:37:13+00:00",
      "link": null,
      "locked_date": null,
      "locked_date_iso": null,
      "owner_account_id": 559988,
      "owner_display_name": "Mysticial",
      "owner_link": "https://stackoverflow.com/users/922184/mysticial",
      "owner_profile_image": "https://i.sstatic.net/h7WDB.jpg?s=256",
      "owner_reputation": 473493,
      "owner_user_id": 922184,
      "owner_user_type": "registered",
      "question_id": 11227809,
      "score": 35296,
      "title": null
    }
  ],
  "answers_count": 1,
  "has_more": false,
  "page": 1,
  "page_size": 30,
  "posts": "answers",
  "quota_remaining": 9987,
  "site": "stackoverflow",
  "tags": "c#",
  "total": 20735,
  "user_id": 22656
}
```

### Get a user's bookmarks

Get the questions one or more users have bookmarked: what the sites used to call favourites. Sorting by 'date bookmarked' gives them in the order they were saved, which is what makes this a reading list a workflow can act on.

**Inputs**

- User IDs (`user_ids`, text, required): The users to read, by their numeric ids on this site. A user id is site-specific (the same person has a different one on each site) and appears in their profile URL. Up to 100 at a time, separated by commas.
- Site (`site`, text): Which Stack Exchange site to ask. Defaults to Stack Overflow. The list is fetched from Stack Exchange when the connection is made; use the refresh button if a new site has launched since.
- Sort by (`sort`, text): How to order the results. Defaults to last activity. The minimum and maximum below bound whichever field this sorts by, which is why there is a value pair and a date pair: use the one that matches the sort chosen here. One of: `activity` (Last activity), `creation` (Creation date), `votes` (Score), `added` (Date bookmarked).
- Order (`order`, text): Which end of the sort to start from. Defaults to descending. One of: `desc` (Descending: highest or newest first), `asc` (Ascending: lowest or oldest first).
- Created on or after (`from_date`, date): Only include things created on or after this date. Leave empty for no lower bound.
- Created on or before (`to_date`, date): Only include things created on or before this date. Leave empty for no upper bound.
- Minimum value (`min_value`, number): Lower bound on the field the sort orders by, when that field is a number: a score for the score sort, a reputation for the reputation sort. Use the date bounds instead when sorting by a date.
- Maximum value (`max_value`, number): Upper bound on the field the sort orders by, when that field is a number. Use the date bounds instead when sorting by a date.
- Minimum date (`min_date`, date): Lower bound on the field the sort orders by, when that field is a date: last activity for the activity sort, for instance. Use the value bounds instead when sorting by a number.
- Maximum date (`max_date`, date): Upper bound on the field the sort orders by, when that field is a date. Use the value bounds instead when sorting by a number.
- Results per page (`page_size`, number): How many results to return, 1–100. Defaults to 30. From 1 to 100.
- Page (`page`, number): Which page of results to return, starting at 1. The result says whether there are more. At least 1.
- Include post body (`include_body`, true/false): Fetch the full text of each post as well as its summary. Off by default because bodies are large; turn it on to summarise, search or quote the text. Each result then carries the site's HTML in 'body' and a plain-text rendering in 'body_text'.

**Outputs**

- `has_more` (true/false)
- `page` (number)
- `page_size` (number)
- `questions` (list)
- `questions_count` (number)
- `quota_remaining` (number)
- `site` (text)
- `total` (number)
- `user_ids` (text)

**Example output**

```json
{
  "has_more": false,
  "page": 1,
  "page_size": 30,
  "questions": [
    {
      "accepted_answer_id": 11227902,
      "answer_count": 25,
      "body": null,
      "body_text": null,
      "bounty_amount": null,
      "bounty_closes_date": null,
      "bounty_closes_date_iso": null,
      "closed_date": null,
      "closed_date_iso": null,
      "closed_reason": null,
      "collectives": [],
      "community_owned_date": null,
      "community_owned_date_iso": null,
      "content_license": "CC BY-SA 4.0",
      "creation_date": 1340805096,
      "creation_date_iso": "2012-06-27T13:51:36+00:00",
      "is_answered": true,
      "last_activity_date": 1775626532,
      "last_activity_date_iso": "2026-04-08T05:35:32+00:00",
      "last_edit_date": 1775626532,
      "last_edit_date_iso": "2026-04-08T05:35:32+00:00",
      "link": "https://stackoverflow.com/questions/11227809/why-is-conditional-processing-of-a-sorted-array-faster",
      "locked_date": null,
      "locked_date_iso": null,
      "owner_account_id": 31692,
      "owner_display_name": "GManNickG",
      "owner_link": "https://stackoverflow.com/users/87234/gmannickg",
      "owner_profile_image": "https://i.sstatic.net/FkjBe.png?s=256",
      "owner_reputation": 507347,
      "owner_user_id": 87234,
      "owner_user_type": "registered",
      "protected_date": 1399067470,
      "protected_date_iso": "2014-05-02T21:51:10+00:00",
      "question_id": 11227809,
      "score": 27546,
      "tags": [
        "java",
        "c++",
        "performance",
        "cpu-architecture",
        "branch-prediction"
      ],
      "title": "Why is conditional processing of a sorted array faster than of an unsorted array?",
      "view_count": 1997358
    }
  ],
  "questions_count": 1,
  "quota_remaining": 9987,
  "site": "stackoverflow",
  "total": 12,
  "user_ids": "22656"
}
```

### Get a user's comments

Get the comments one or more users have left. Name a recipient as well and it narrows to the comments those users addressed to that person: one side of a conversation between two people.

**Inputs**

- User IDs (`user_ids`, text, required): The users to read, by their numeric ids on this site. A user id is site-specific (the same person has a different one on each site) and appears in their profile URL. Up to 100 at a time, separated by commas.
- Addressed to user ID (`to_user_id`, number): Only include comments addressed to this user. Leave empty for all of their comments.
- Site (`site`, text): Which Stack Exchange site to ask. Defaults to Stack Overflow. The list is fetched from Stack Exchange when the connection is made; use the refresh button if a new site has launched since.
- Sort by (`sort`, text): How to order the results. Defaults to creation date. The minimum and maximum below bound whichever field this sorts by, which is why there is a value pair and a date pair: use the one that matches the sort chosen here. One of: `creation` (Creation date), `votes` (Score).
- Order (`order`, text): Which end of the sort to start from. Defaults to descending. One of: `desc` (Descending: highest or newest first), `asc` (Ascending: lowest or oldest first).
- Created on or after (`from_date`, date): Only include things created on or after this date. Leave empty for no lower bound.
- Created on or before (`to_date`, date): Only include things created on or before this date. Leave empty for no upper bound.
- Minimum value (`min_value`, number): Lower bound on the field the sort orders by, when that field is a number: a score for the score sort, a reputation for the reputation sort. Use the date bounds instead when sorting by a date.
- Maximum value (`max_value`, number): Upper bound on the field the sort orders by, when that field is a number. Use the date bounds instead when sorting by a date.
- Minimum date (`min_date`, date): Lower bound on the field the sort orders by, when that field is a date: last activity for the activity sort, for instance. Use the value bounds instead when sorting by a number.
- Maximum date (`max_date`, date): Upper bound on the field the sort orders by, when that field is a date. Use the value bounds instead when sorting by a number.
- Results per page (`page_size`, number): How many results to return, 1–100. Defaults to 30. From 1 to 100.
- Page (`page`, number): Which page of results to return, starting at 1. The result says whether there are more. At least 1.
- Include post body (`include_body`, true/false): Fetch the full text of each post as well as its summary. Off by default because bodies are large; turn it on to summarise, search or quote the text. Each result then carries the site's HTML in 'body' and a plain-text rendering in 'body_text'.

**Outputs**

- `comments` (list)
- `comments_count` (number)
- `has_more` (true/false)
- `page` (number)
- `page_size` (number)
- `quota_remaining` (number)
- `site` (text)
- `to_user_id` (number)
- `total` (number)
- `user_ids` (text)

**Example output**

```json
{
  "comments": [
    {
      "body": null,
      "body_text": null,
      "comment_id": 30146633,
      "content_license": "CC BY-SA 3.0",
      "creation_date": 1385468758,
      "creation_date_iso": "2013-11-26T12:25:58+00:00",
      "edited": false,
      "link": null,
      "owner_account_id": 972992,
      "owner_display_name": "cptloop",
      "owner_link": "https://stackoverflow.com/users/995110/cptloop",
      "owner_profile_image": "https://www.gravatar.com/avatar/0d7e2371e0c63bfb4ef7bfa37561b0ee?s=256",
      "owner_reputation": 695,
      "owner_user_id": 995110,
      "owner_user_type": "registered",
      "post_id": 11304926,
      "post_type": null,
      "reply_to_account_id": null,
      "reply_to_display_name": null,
      "reply_to_link": null,
      "reply_to_profile_image": null,
      "reply_to_reputation": null,
      "reply_to_user_id": null,
      "reply_to_user_type": null,
      "score": 2049
    }
  ],
  "comments_count": 1,
  "has_more": false,
  "page": 1,
  "page_size": 30,
  "quota_remaining": 9987,
  "site": "stackoverflow",
  "to_user_id": null,
  "total": 41628,
  "user_ids": "22656"
}
```

### Get a user's mentions

Get the comments that @-mention one or more users. Run on a schedule against your own id, this is a public stand-in for the inbox: it tells you when someone has addressed you in a comment.

**Inputs**

- User IDs (`user_ids`, text, required): The users to read, by their numeric ids on this site. A user id is site-specific (the same person has a different one on each site) and appears in their profile URL. Up to 100 at a time, separated by commas.
- Site (`site`, text): Which Stack Exchange site to ask. Defaults to Stack Overflow. The list is fetched from Stack Exchange when the connection is made; use the refresh button if a new site has launched since.
- Sort by (`sort`, text): How to order the results. Defaults to creation date. The minimum and maximum below bound whichever field this sorts by, which is why there is a value pair and a date pair: use the one that matches the sort chosen here. One of: `creation` (Creation date), `votes` (Score).
- Order (`order`, text): Which end of the sort to start from. Defaults to descending. One of: `desc` (Descending: highest or newest first), `asc` (Ascending: lowest or oldest first).
- Created on or after (`from_date`, date): Only include things created on or after this date. Leave empty for no lower bound.
- Created on or before (`to_date`, date): Only include things created on or before this date. Leave empty for no upper bound.
- Minimum value (`min_value`, number): Lower bound on the field the sort orders by, when that field is a number: a score for the score sort, a reputation for the reputation sort. Use the date bounds instead when sorting by a date.
- Maximum value (`max_value`, number): Upper bound on the field the sort orders by, when that field is a number. Use the date bounds instead when sorting by a date.
- Minimum date (`min_date`, date): Lower bound on the field the sort orders by, when that field is a date: last activity for the activity sort, for instance. Use the value bounds instead when sorting by a number.
- Maximum date (`max_date`, date): Upper bound on the field the sort orders by, when that field is a date. Use the value bounds instead when sorting by a number.
- Results per page (`page_size`, number): How many results to return, 1–100. Defaults to 30. From 1 to 100.
- Page (`page`, number): Which page of results to return, starting at 1. The result says whether there are more. At least 1.
- Include post body (`include_body`, true/false): Fetch the full text of each post as well as its summary. Off by default because bodies are large; turn it on to summarise, search or quote the text. Each result then carries the site's HTML in 'body' and a plain-text rendering in 'body_text'.

**Outputs**

- `comments` (list)
- `comments_count` (number)
- `has_more` (true/false)
- `page` (number)
- `page_size` (number)
- `quota_remaining` (number)
- `site` (text)
- `total` (number)
- `user_ids` (text)

**Example output**

```json
{
  "comments": [
    {
      "body": null,
      "body_text": null,
      "comment_id": 30146633,
      "content_license": "CC BY-SA 3.0",
      "creation_date": 1385468758,
      "creation_date_iso": "2013-11-26T12:25:58+00:00",
      "edited": false,
      "link": null,
      "owner_account_id": 972992,
      "owner_display_name": "cptloop",
      "owner_link": "https://stackoverflow.com/users/995110/cptloop",
      "owner_profile_image": "https://www.gravatar.com/avatar/0d7e2371e0c63bfb4ef7bfa37561b0ee?s=256",
      "owner_reputation": 695,
      "owner_user_id": 995110,
      "owner_user_type": "registered",
      "post_id": 11304926,
      "post_type": null,
      "reply_to_account_id": null,
      "reply_to_display_name": null,
      "reply_to_link": null,
      "reply_to_profile_image": null,
      "reply_to_reputation": null,
      "reply_to_user_id": null,
      "reply_to_user_type": null,
      "score": 2049
    }
  ],
  "comments_count": 1,
  "has_more": false,
  "page": 1,
  "page_size": 30,
  "quota_remaining": 9987,
  "site": "stackoverflow",
  "total": 3491,
  "user_ids": "22656"
}
```

### Get a user's posts

Get one or more users' questions and answers together, each saying which it is: everything they have written, in one list.

**Inputs**

- User IDs (`user_ids`, text, required): The users to read, by their numeric ids on this site. A user id is site-specific (the same person has a different one on each site) and appears in their profile URL. Up to 100 at a time, separated by commas.
- Site (`site`, text): Which Stack Exchange site to ask. Defaults to Stack Overflow. The list is fetched from Stack Exchange when the connection is made; use the refresh button if a new site has launched since.
- Sort by (`sort`, text): How to order the results. Defaults to last activity. The minimum and maximum below bound whichever field this sorts by, which is why there is a value pair and a date pair: use the one that matches the sort chosen here. One of: `activity` (Last activity), `creation` (Creation date), `votes` (Score).
- Order (`order`, text): Which end of the sort to start from. Defaults to descending. One of: `desc` (Descending: highest or newest first), `asc` (Ascending: lowest or oldest first).
- Created on or after (`from_date`, date): Only include things created on or after this date. Leave empty for no lower bound.
- Created on or before (`to_date`, date): Only include things created on or before this date. Leave empty for no upper bound.
- Minimum value (`min_value`, number): Lower bound on the field the sort orders by, when that field is a number: a score for the score sort, a reputation for the reputation sort. Use the date bounds instead when sorting by a date.
- Maximum value (`max_value`, number): Upper bound on the field the sort orders by, when that field is a number. Use the date bounds instead when sorting by a date.
- Minimum date (`min_date`, date): Lower bound on the field the sort orders by, when that field is a date: last activity for the activity sort, for instance. Use the value bounds instead when sorting by a number.
- Maximum date (`max_date`, date): Upper bound on the field the sort orders by, when that field is a date. Use the value bounds instead when sorting by a number.
- Results per page (`page_size`, number): How many results to return, 1–100. Defaults to 30. From 1 to 100.
- Page (`page`, number): Which page of results to return, starting at 1. The result says whether there are more. At least 1.
- Include post body (`include_body`, true/false): Fetch the full text of each post as well as its summary. Off by default because bodies are large; turn it on to summarise, search or quote the text. Each result then carries the site's HTML in 'body' and a plain-text rendering in 'body_text'.

**Outputs**

- `has_more` (true/false)
- `page` (number)
- `page_size` (number)
- `posts` (list)
- `posts_count` (number)
- `quota_remaining` (number)
- `site` (text)
- `total` (number)
- `user_ids` (text)

**Example output**

```json
{
  "has_more": false,
  "page": 1,
  "page_size": 30,
  "posts": [
    {
      "body": null,
      "body_text": null,
      "collectives": [],
      "content_license": "CC BY-SA 4.0",
      "creation_date": 1340805096,
      "creation_date_iso": "2012-06-27T13:51:36+00:00",
      "last_activity_date": 1775626532,
      "last_activity_date_iso": "2026-04-08T05:35:32+00:00",
      "last_edit_date": 1775626532,
      "last_edit_date_iso": "2026-04-08T05:35:32+00:00",
      "link": "https://stackoverflow.com/q/11227809",
      "owner_account_id": 31692,
      "owner_display_name": "GManNickG",
      "owner_link": "https://stackoverflow.com/users/87234/gmannickg",
      "owner_profile_image": "https://i.sstatic.net/FkjBe.png?s=256",
      "owner_reputation": 507347,
      "owner_user_id": 87234,
      "owner_user_type": "registered",
      "post_id": 11227809,
      "post_type": "question",
      "score": 27546,
      "title": null
    }
  ],
  "posts_count": 1,
  "quota_remaining": 9987,
  "site": "stackoverflow",
  "total": 35158,
  "user_ids": "22656"
}
```

### Get a user's privileges

Get what a user's reputation has unlocked on this site: commenting, voting, editing, closing, moderator tools. Use it to check whether someone can do a thing before asking them to.

**Inputs**

- User ID (`user_id`, number, required): The user to read, by their numeric id on this site. It appears in their profile URL.
- Site (`site`, text): Which Stack Exchange site to ask. Defaults to Stack Overflow. The list is fetched from Stack Exchange when the connection is made; use the refresh button if a new site has launched since.
- Results per page (`page_size`, number): How many results to return, 1–100. Defaults to 30. From 1 to 100.
- Page (`page`, number): Which page of results to return, starting at 1. The result says whether there are more. At least 1.

**Outputs**

- `has_more` (true/false)
- `page` (number)
- `page_size` (number)
- `privileges` (list)
- `privileges_count` (number)
- `quota_remaining` (number)
- `site` (text)
- `total` (number)
- `user_id` (number)

**Example output**

```json
{
  "has_more": false,
  "page": 1,
  "page_size": 30,
  "privileges": [
    {
      "description": "Ask a question or contribute an answer, expandable usercard",
      "reputation": 1,
      "short_description": "Create posts, expandable usercard"
    }
  ],
  "privileges_count": 1,
  "quota_remaining": 9987,
  "site": "stackoverflow",
  "total": 27,
  "user_id": 22656
}
```

### Get a user's questions

Get the questions one or more users have asked: all of them, or just the ones that are featured, have no answers at all, have answers but none accepted, or are unanswered by the site's own definition. 'Unaccepted' on your own account is the list of questions still waiting for you to mark an answer.

**Inputs**

- User IDs (`user_ids`, text, required): The users to read, by their numeric ids on this site. A user id is site-specific (the same person has a different one on each site) and appears in their profile URL. Up to 100 at a time, separated by commas.
- Which questions (`filter_by`, text): Defaults to all of the user's questions. One of: `all` (All their questions), `featured` (Featured: a bounty is open), `no_answers` (No answers at all), `unaccepted` (Answered but nothing accepted), `unanswered` (Unanswered: no accepted or upvoted answer).
- Site (`site`, text): Which Stack Exchange site to ask. Defaults to Stack Overflow. The list is fetched from Stack Exchange when the connection is made; use the refresh button if a new site has launched since.
- Sort by (`sort`, text): How to order the results. Defaults to last activity. The minimum and maximum below bound whichever field this sorts by, which is why there is a value pair and a date pair: use the one that matches the sort chosen here. One of: `activity` (Last activity), `creation` (Creation date), `votes` (Score).
- Order (`order`, text): Which end of the sort to start from. Defaults to descending. One of: `desc` (Descending: highest or newest first), `asc` (Ascending: lowest or oldest first).
- Created on or after (`from_date`, date): Only include things created on or after this date. Leave empty for no lower bound.
- Created on or before (`to_date`, date): Only include things created on or before this date. Leave empty for no upper bound.
- Minimum value (`min_value`, number): Lower bound on the field the sort orders by, when that field is a number: a score for the score sort, a reputation for the reputation sort. Use the date bounds instead when sorting by a date.
- Maximum value (`max_value`, number): Upper bound on the field the sort orders by, when that field is a number. Use the date bounds instead when sorting by a date.
- Minimum date (`min_date`, date): Lower bound on the field the sort orders by, when that field is a date: last activity for the activity sort, for instance. Use the value bounds instead when sorting by a number.
- Maximum date (`max_date`, date): Upper bound on the field the sort orders by, when that field is a date. Use the value bounds instead when sorting by a number.
- Results per page (`page_size`, number): How many results to return, 1–100. Defaults to 30. From 1 to 100.
- Page (`page`, number): Which page of results to return, starting at 1. The result says whether there are more. At least 1.
- Include post body (`include_body`, true/false): Fetch the full text of each post as well as its summary. Off by default because bodies are large; turn it on to summarise, search or quote the text. Each result then carries the site's HTML in 'body' and a plain-text rendering in 'body_text'.

**Outputs**

- `filter_by` (text)
- `has_more` (true/false)
- `page` (number)
- `page_size` (number)
- `questions` (list)
- `questions_count` (number)
- `quota_remaining` (number)
- `site` (text)
- `total` (number)
- `user_ids` (text)

**Example output**

```json
{
  "filter_by": "all",
  "has_more": false,
  "page": 1,
  "page_size": 30,
  "questions": [
    {
      "accepted_answer_id": 11227902,
      "answer_count": 25,
      "body": null,
      "body_text": null,
      "bounty_amount": null,
      "bounty_closes_date": null,
      "bounty_closes_date_iso": null,
      "closed_date": null,
      "closed_date_iso": null,
      "closed_reason": null,
      "collectives": [],
      "community_owned_date": null,
      "community_owned_date_iso": null,
      "content_license": "CC BY-SA 4.0",
      "creation_date": 1340805096,
      "creation_date_iso": "2012-06-27T13:51:36+00:00",
      "is_answered": true,
      "last_activity_date": 1775626532,
      "last_activity_date_iso": "2026-04-08T05:35:32+00:00",
      "last_edit_date": 1775626532,
      "last_edit_date_iso": "2026-04-08T05:35:32+00:00",
      "link": "https://stackoverflow.com/questions/11227809/why-is-conditional-processing-of-a-sorted-array-faster",
      "locked_date": null,
      "locked_date_iso": null,
      "owner_account_id": 31692,
      "owner_display_name": "GManNickG",
      "owner_link": "https://stackoverflow.com/users/87234/gmannickg",
      "owner_profile_image": "https://i.sstatic.net/FkjBe.png?s=256",
      "owner_reputation": 507347,
      "owner_user_id": 87234,
      "owner_user_type": "registered",
      "protected_date": 1399067470,
      "protected_date_iso": "2014-05-02T21:51:10+00:00",
      "question_id": 11227809,
      "score": 27546,
      "tags": [
        "java",
        "c++",
        "performance",
        "cpu-architecture",
        "branch-prediction"
      ],
      "title": "Why is conditional processing of a sorted array faster than of an unsorted array?",
      "view_count": 1997358
    }
  ],
  "questions_count": 1,
  "quota_remaining": 9987,
  "site": "stackoverflow",
  "total": 61,
  "user_ids": "22656"
}
```

### Get a user's reputation changes

Get the reputation one or more users have earned post by post, each entry naming the post and the kind of vote behind it. With a date window this answers 'which of my answers earned reputation this week'. For every change including the ones no post caused, use 'Get a user's reputation history'.

**Inputs**

- User IDs (`user_ids`, text, required): The users to read, by their numeric ids on this site. A user id is site-specific (the same person has a different one on each site) and appears in their profile URL. Up to 100 at a time, separated by commas.
- Site (`site`, text): Which Stack Exchange site to ask. Defaults to Stack Overflow. The list is fetched from Stack Exchange when the connection is made; use the refresh button if a new site has launched since.
- Created on or after (`from_date`, date): Only include things created on or after this date. Leave empty for no lower bound.
- Created on or before (`to_date`, date): Only include things created on or before this date. Leave empty for no upper bound.
- Results per page (`page_size`, number): How many results to return, 1–100. Defaults to 30. From 1 to 100.
- Page (`page`, number): Which page of results to return, starting at 1. The result says whether there are more. At least 1.

**Outputs**

- `changes` (list)
- `changes_count` (number)
- `has_more` (true/false)
- `page` (number)
- `page_size` (number)
- `quota_remaining` (number)
- `site` (text)
- `total` (number)
- `user_ids` (text)

**Example output**

```json
{
  "changes": [
    {
      "link": "https://stackoverflow.com/a/79998400",
      "on_date": 1787760000,
      "on_date_iso": "2026-08-26T16:00:00+00:00",
      "post_id": 79998400,
      "post_type": "answer",
      "reputation_change": 10,
      "title": "How do I convert a string to an enum in C#?",
      "user_id": 22656,
      "vote_type": "up_votes"
    }
  ],
  "changes_count": 1,
  "has_more": false,
  "page": 1,
  "page_size": 30,
  "quota_remaining": 9987,
  "site": "stackoverflow",
  "total": 284,
  "user_ids": "22656"
}
```

### Get a user's reputation history

Get every public reputation change for one or more users, including the ones no post caused: bounties started and won, the association bonus, suspensions. Each entry says what kind of change it was.

**Inputs**

- User IDs (`user_ids`, text, required): The users to read, by their numeric ids on this site. A user id is site-specific (the same person has a different one on each site) and appears in their profile URL. Up to 100 at a time, separated by commas.
- Site (`site`, text): Which Stack Exchange site to ask. Defaults to Stack Overflow. The list is fetched from Stack Exchange when the connection is made; use the refresh button if a new site has launched since.
- Results per page (`page_size`, number): How many results to return, 1–100. Defaults to 30. From 1 to 100.
- Page (`page`, number): Which page of results to return, starting at 1. The result says whether there are more. At least 1.

**Outputs**

- `changes` (list)
- `changes_count` (number)
- `has_more` (true/false)
- `page` (number)
- `page_size` (number)
- `quota_remaining` (number)
- `site` (text)
- `total` (number)
- `user_ids` (text)

**Example output**

```json
{
  "changes": [
    {
      "creation_date": 1787760000,
      "creation_date_iso": "2026-08-26T16:00:00+00:00",
      "post_id": 79998400,
      "reputation_change": 10,
      "reputation_history_type": "post_upvoted",
      "user_id": 22656
    }
  ],
  "changes_count": 1,
  "has_more": false,
  "page": 1,
  "page_size": 30,
  "quota_remaining": 9987,
  "site": "stackoverflow",
  "total": 185002,
  "user_ids": "22656"
}
```

### Get a user's suggested edits

Get the edits one or more users have proposed, and whether each was approved, rejected, or is still waiting for review.

**Inputs**

- User IDs (`user_ids`, text, required): The users to read, by their numeric ids on this site. A user id is site-specific (the same person has a different one on each site) and appears in their profile URL. Up to 100 at a time, separated by commas.
- Site (`site`, text): Which Stack Exchange site to ask. Defaults to Stack Overflow. The list is fetched from Stack Exchange when the connection is made; use the refresh button if a new site has launched since.
- Sort by (`sort`, text): How to order the results. Defaults to creation date. The minimum and maximum below bound whichever field this sorts by, which is why there is a value pair and a date pair: use the one that matches the sort chosen here. One of: `creation` (Creation date), `approval` (Date approved), `rejection` (Date rejected).
- Order (`order`, text): Which end of the sort to start from. Defaults to descending. One of: `desc` (Descending: highest or newest first), `asc` (Ascending: lowest or oldest first).
- Created on or after (`from_date`, date): Only include things created on or after this date. Leave empty for no lower bound.
- Created on or before (`to_date`, date): Only include things created on or before this date. Leave empty for no upper bound.
- Minimum date (`min_date`, date): Lower bound on the field the sort orders by, when that field is a date: last activity for the activity sort, for instance. Use the value bounds instead when sorting by a number.
- Maximum date (`max_date`, date): Upper bound on the field the sort orders by, when that field is a date. Use the value bounds instead when sorting by a number.
- Results per page (`page_size`, number): How many results to return, 1–100. Defaults to 30. From 1 to 100.
- Page (`page`, number): Which page of results to return, starting at 1. The result says whether there are more. At least 1.
- Include post body (`include_body`, true/false): Fetch the full text of each post as well as its summary. Off by default because bodies are large; turn it on to summarise, search or quote the text. Each result then carries the site's HTML in 'body' and a plain-text rendering in 'body_text'.

**Outputs**

- `has_more` (true/false)
- `page` (number)
- `page_size` (number)
- `quota_remaining` (number)
- `site` (text)
- `suggested_edits` (list)
- `suggested_edits_count` (number)
- `total` (number)
- `user_ids` (text)

**Example output**

```json
{
  "has_more": false,
  "page": 1,
  "page_size": 30,
  "quota_remaining": 9987,
  "site": "stackoverflow",
  "suggested_edits": [
    {
      "approval_date": null,
      "approval_date_iso": null,
      "body": null,
      "body_text": null,
      "comment": "Fixed spelling and formatting",
      "creation_date": 1787780000,
      "creation_date_iso": "2026-08-26T17:33:20+00:00",
      "post_id": 79998507,
      "post_type": "question",
      "proposing_user_account_id": 912336,
      "proposing_user_display_name": "Igor",
      "proposing_user_link": "https://stackoverflow.com/users/945871/igor",
      "proposing_user_profile_image": "https://www.gravatar.com/avatar/b9b646cc701a?s=256",
      "proposing_user_reputation": 6506,
      "proposing_user_user_id": 945871,
      "proposing_user_user_type": "registered",
      "rejection_date": null,
      "rejection_date_iso": null,
      "suggested_edit_id": 44123456,
      "tags": [
        "css",
        "right-to-left"
      ],
      "title": "RTL vs LTR layout"
    }
  ],
  "suggested_edits_count": 1,
  "total": 9,
  "user_ids": "22656"
}
```

### Get a user's timeline

Get everything one or more users have done, in order: questions asked, answers written, comments left, badges earned, edits suggested, answers accepted. With a date window this is 'what did they do last week' in a single call.

**Inputs**

- User IDs (`user_ids`, text, required): The users to read, by their numeric ids on this site. A user id is site-specific (the same person has a different one on each site) and appears in their profile URL. Up to 100 at a time, separated by commas.
- Site (`site`, text): Which Stack Exchange site to ask. Defaults to Stack Overflow. The list is fetched from Stack Exchange when the connection is made; use the refresh button if a new site has launched since.
- Created on or after (`from_date`, date): Only include things created on or after this date. Leave empty for no lower bound.
- Created on or before (`to_date`, date): Only include things created on or before this date. Leave empty for no upper bound.
- Results per page (`page_size`, number): How many results to return, 1–100. Defaults to 30. From 1 to 100.
- Page (`page`, number): Which page of results to return, starting at 1. The result says whether there are more. At least 1.

**Outputs**

- `events` (list)
- `events_count` (number)
- `has_more` (true/false)
- `page` (number)
- `page_size` (number)
- `quota_remaining` (number)
- `site` (text)
- `total` (number)
- `user_ids` (text)

**Example output**

```json
{
  "events": [
    {
      "badge_id": null,
      "comment_id": null,
      "creation_date": 1787770005,
      "creation_date_iso": "2026-08-26T18:46:45+00:00",
      "detail": null,
      "link": "https://stackoverflow.com/a/79998400",
      "post_id": 79998400,
      "post_type": "answer",
      "suggested_edit_id": null,
      "timeline_type": "answered",
      "title": "How do I convert a string to an enum in C#?",
      "user_id": 22656
    }
  ],
  "events_count": 1,
  "has_more": false,
  "page": 1,
  "page_size": 30,
  "quota_remaining": 9987,
  "site": "stackoverflow",
  "total": 90418,
  "user_ids": "22656"
}
```

### Get a user's top tags

Get the tags a user has done best in, with their score and post count on each. Choose whether to rank by their answers, their questions, or both together. This is the 'what is this person actually good at' lookup: the one to run before routing a question to someone.

**Inputs**

- User ID (`user_id`, number, required): The user to read, by their numeric id on this site. It appears in their profile URL.
- Ranked by (`scope`, text): Which posts to rank the tags by. Defaults to questions and answers together. One of: `overall` (Questions and answers together), `answers` (Their answers only), `questions` (Their questions only).
- Site (`site`, text): Which Stack Exchange site to ask. Defaults to Stack Overflow. The list is fetched from Stack Exchange when the connection is made; use the refresh button if a new site has launched since.
- Results per page (`page_size`, number): How many results to return, 1–100. Defaults to 30. From 1 to 100.
- Page (`page`, number): Which page of results to return, starting at 1. The result says whether there are more. At least 1.

**Outputs**

- `has_more` (true/false)
- `page` (number)
- `page_size` (number)
- `quota_remaining` (number)
- `scope` (text)
- `site` (text)
- `tags` (list)
- `tags_count` (number)
- `total` (number)
- `user_id` (number)

**Example output**

```json
{
  "has_more": false,
  "page": 1,
  "page_size": 30,
  "quota_remaining": 9987,
  "scope": "overall",
  "site": "stackoverflow",
  "tags": [
    {
      "answer_count": 20735,
      "answer_score": 116281,
      "question_count": 12,
      "question_score": 1893,
      "tag_name": "c#",
      "user_id": 22656
    }
  ],
  "tags_count": 1,
  "total": 1462,
  "user_id": 22656
}
```

### Get answers

Read up to 100 answers by their numeric ids. With 'Include post body' on this is how a workflow pulls the text of an accepted answer it found through a search and puts it in front of someone.

**Inputs**

- Answer IDs (`answer_ids`, text, required): The answers to read, by their numeric ids. Up to 100 at a time, separated by commas.
- Site (`site`, text): Which Stack Exchange site to ask. Defaults to Stack Overflow. The list is fetched from Stack Exchange when the connection is made; use the refresh button if a new site has launched since.
- Sort by (`sort`, text): How to order the results. Defaults to last activity. The minimum and maximum below bound whichever field this sorts by, which is why there is a value pair and a date pair: use the one that matches the sort chosen here. One of: `activity` (Last activity), `creation` (Creation date), `votes` (Score).
- Order (`order`, text): Which end of the sort to start from. Defaults to descending. One of: `desc` (Descending: highest or newest first), `asc` (Ascending: lowest or oldest first).
- Created on or after (`from_date`, date): Only include things created on or after this date. Leave empty for no lower bound.
- Created on or before (`to_date`, date): Only include things created on or before this date. Leave empty for no upper bound.
- Minimum value (`min_value`, number): Lower bound on the field the sort orders by, when that field is a number: a score for the score sort, a reputation for the reputation sort. Use the date bounds instead when sorting by a date.
- Maximum value (`max_value`, number): Upper bound on the field the sort orders by, when that field is a number. Use the date bounds instead when sorting by a date.
- Minimum date (`min_date`, date): Lower bound on the field the sort orders by, when that field is a date: last activity for the activity sort, for instance. Use the value bounds instead when sorting by a number.
- Maximum date (`max_date`, date): Upper bound on the field the sort orders by, when that field is a date. Use the value bounds instead when sorting by a number.
- Results per page (`page_size`, number): How many results to return, 1–100. Defaults to 30. From 1 to 100.
- Page (`page`, number): Which page of results to return, starting at 1. The result says whether there are more. At least 1.
- Include post body (`include_body`, true/false): Fetch the full text of each post as well as its summary. Off by default because bodies are large; turn it on to summarise, search or quote the text. Each result then carries the site's HTML in 'body' and a plain-text rendering in 'body_text'.

**Outputs**

- `answer_ids` (text)
- `answers` (list)
- `answers_count` (number)
- `has_more` (true/false)
- `page` (number)
- `page_size` (number)
- `quota_remaining` (number)
- `site` (text)
- `total` (number)

**Example output**

```json
{
  "answer_ids": "11227902",
  "answers": [
    {
      "answer_id": 11227902,
      "body": null,
      "body_text": null,
      "collectives": [],
      "community_owned_date": null,
      "community_owned_date_iso": null,
      "content_license": "CC BY-SA 4.0",
      "creation_date": 1340805402,
      "creation_date_iso": "2012-06-27T13:56:42+00:00",
      "is_accepted": true,
      "last_activity_date": 1709573833,
      "last_activity_date_iso": "2024-03-04T17:37:13+00:00",
      "last_edit_date": 1709573833,
      "last_edit_date_iso": "2024-03-04T17:37:13+00:00",
      "link": null,
      "locked_date": null,
      "locked_date_iso": null,
      "owner_account_id": 559988,
      "owner_display_name": "Mysticial",
      "owner_link": "https://stackoverflow.com/users/922184/mysticial",
      "owner_profile_image": "https://i.sstatic.net/h7WDB.jpg?s=256",
      "owner_reputation": 473493,
      "owner_user_id": 922184,
      "owner_user_type": "registered",
      "question_id": 11227809,
      "score": 35296,
      "title": null
    }
  ],
  "answers_count": 1,
  "has_more": false,
  "page": 1,
  "page_size": 30,
  "quota_remaining": 9987,
  "site": "stackoverflow",
  "total": 1
}
```

### Get answers to questions

Get the answers posted on one or more questions. Sort by score to put the community's best first, or by creation to see what has just been added: run this on a schedule against a question you are watching to hear about a new answer. Each answer says whether it is the accepted one and who wrote it.

**Inputs**

- Question IDs (`question_ids`, text, required): The questions to read, by their numeric ids. Up to 100 at a time, separated by commas.
- Site (`site`, text): Which Stack Exchange site to ask. Defaults to Stack Overflow. The list is fetched from Stack Exchange when the connection is made; use the refresh button if a new site has launched since.
- Sort by (`sort`, text): How to order the results. Defaults to last activity. The minimum and maximum below bound whichever field this sorts by, which is why there is a value pair and a date pair: use the one that matches the sort chosen here. One of: `activity` (Last activity), `creation` (Creation date), `votes` (Score).
- Order (`order`, text): Which end of the sort to start from. Defaults to descending. One of: `desc` (Descending: highest or newest first), `asc` (Ascending: lowest or oldest first).
- Created on or after (`from_date`, date): Only include things created on or after this date. Leave empty for no lower bound.
- Created on or before (`to_date`, date): Only include things created on or before this date. Leave empty for no upper bound.
- Minimum value (`min_value`, number): Lower bound on the field the sort orders by, when that field is a number: a score for the score sort, a reputation for the reputation sort. Use the date bounds instead when sorting by a date.
- Maximum value (`max_value`, number): Upper bound on the field the sort orders by, when that field is a number. Use the date bounds instead when sorting by a date.
- Minimum date (`min_date`, date): Lower bound on the field the sort orders by, when that field is a date: last activity for the activity sort, for instance. Use the value bounds instead when sorting by a number.
- Maximum date (`max_date`, date): Upper bound on the field the sort orders by, when that field is a date. Use the value bounds instead when sorting by a number.
- Results per page (`page_size`, number): How many results to return, 1–100. Defaults to 30. From 1 to 100.
- Page (`page`, number): Which page of results to return, starting at 1. The result says whether there are more. At least 1.
- Include post body (`include_body`, true/false): Fetch the full text of each post as well as its summary. Off by default because bodies are large; turn it on to summarise, search or quote the text. Each result then carries the site's HTML in 'body' and a plain-text rendering in 'body_text'.

**Outputs**

- `answers` (list)
- `answers_count` (number)
- `has_more` (true/false)
- `page` (number)
- `page_size` (number)
- `question_ids` (text)
- `quota_remaining` (number)
- `site` (text)
- `total` (number)

**Example output**

```json
{
  "answers": [
    {
      "answer_id": 11227902,
      "body": null,
      "body_text": null,
      "collectives": [],
      "community_owned_date": null,
      "community_owned_date_iso": null,
      "content_license": "CC BY-SA 4.0",
      "creation_date": 1340805402,
      "creation_date_iso": "2012-06-27T13:56:42+00:00",
      "is_accepted": true,
      "last_activity_date": 1709573833,
      "last_activity_date_iso": "2024-03-04T17:37:13+00:00",
      "last_edit_date": 1709573833,
      "last_edit_date_iso": "2024-03-04T17:37:13+00:00",
      "link": null,
      "locked_date": null,
      "locked_date_iso": null,
      "owner_account_id": 559988,
      "owner_display_name": "Mysticial",
      "owner_link": "https://stackoverflow.com/users/922184/mysticial",
      "owner_profile_image": "https://i.sstatic.net/h7WDB.jpg?s=256",
      "owner_reputation": 473493,
      "owner_user_id": 922184,
      "owner_user_type": "registered",
      "question_id": 11227809,
      "score": 35296,
      "title": null
    }
  ],
  "answers_count": 1,
  "has_more": false,
  "page": 1,
  "page_size": 30,
  "question_ids": "11227809",
  "quota_remaining": 9987,
  "site": "stackoverflow",
  "total": 25
}
```

### Get badge recipients

Get badges as they were awarded, each with the person who earned it. Name badge ids to follow particular ones ('who has earned Great Answer'), or leave them empty and set a date window for everything the site awarded in a period, newest first.

**Inputs**

- Badge IDs (`badge_ids`, text): The badges to follow, by their numeric ids. Up to 100 at a time, separated by commas. Leave empty to cover the whole site.
- Site (`site`, text): Which Stack Exchange site to ask. Defaults to Stack Overflow. The list is fetched from Stack Exchange when the connection is made; use the refresh button if a new site has launched since.
- Created on or after (`from_date`, date): Only include things created on or after this date. Leave empty for no lower bound.
- Created on or before (`to_date`, date): Only include things created on or before this date. Leave empty for no upper bound.
- Results per page (`page_size`, number): How many results to return, 1–100. Defaults to 30. From 1 to 100.
- Page (`page`, number): Which page of results to return, starting at 1. The result says whether there are more. At least 1.

**Outputs**

- `badge_ids` (text)
- `badges` (list)
- `badges_count` (number)
- `has_more` (true/false)
- `page` (number)
- `page_size` (number)
- `quota_remaining` (number)
- `site` (text)
- `total` (number)

**Example output**

```json
{
  "badge_ids": "17",
  "badges": [
    {
      "award_count": 1288401,
      "badge_id": 17,
      "badge_type": "named",
      "description": null,
      "link": "https://stackoverflow.com/badges/17/nice-answer",
      "name": "Nice Answer",
      "rank": "bronze",
      "user_account_id": null,
      "user_display_name": "Jon Skeet",
      "user_link": null,
      "user_profile_image": null,
      "user_reputation": null,
      "user_user_id": 22656,
      "user_user_type": null
    }
  ],
  "badges_count": 1,
  "has_more": false,
  "page": 1,
  "page_size": 30,
  "quota_remaining": 9987,
  "site": "stackoverflow",
  "total": 1288401
}
```

### Get badges

Read up to 100 badges by their numeric ids, in one request. Use it to put a name, a rank and an award count to the badge ids that come back on a user's badge list or a timeline entry.

**Inputs**

- Badge IDs (`badge_ids`, text, required): The badges to read, by their numeric ids. Up to 100 at a time, separated by commas.
- Site (`site`, text): Which Stack Exchange site to ask. Defaults to Stack Overflow. The list is fetched from Stack Exchange when the connection is made; use the refresh button if a new site has launched since.
- Sort by (`sort`, text): How to order the results. Defaults to rank: gold, silver, bronze. The minimum and maximum below bound whichever field this sorts by, which is why there is a value pair and a date pair: use the one that matches the sort chosen here. One of: `rank` (Rank: gold, silver, bronze), `name`, `type` (Badge type).
- Order (`order`, text): Which end of the sort to start from. Defaults to descending. One of: `desc` (Descending: highest or newest first), `asc` (Ascending: lowest or oldest first).
- Created on or after (`from_date`, date): Only include things created on or after this date. Leave empty for no lower bound.
- Created on or before (`to_date`, date): Only include things created on or before this date. Leave empty for no upper bound.
- Minimum date (`min_date`, date): Lower bound on the field the sort orders by, when that field is a date: last activity for the activity sort, for instance. Use the value bounds instead when sorting by a number.
- Maximum date (`max_date`, date): Upper bound on the field the sort orders by, when that field is a date. Use the value bounds instead when sorting by a number.
- Results per page (`page_size`, number): How many results to return, 1–100. Defaults to 30. From 1 to 100.
- Page (`page`, number): Which page of results to return, starting at 1. The result says whether there are more. At least 1.

**Outputs**

- `badge_ids` (text)
- `badges` (list)
- `badges_count` (number)
- `has_more` (true/false)
- `page` (number)
- `page_size` (number)
- `quota_remaining` (number)
- `site` (text)
- `total` (number)

**Example output**

```json
{
  "badge_ids": "17",
  "badges": [
    {
      "award_count": 1288401,
      "badge_id": 17,
      "badge_type": "named",
      "description": null,
      "link": "https://stackoverflow.com/badges/17/nice-answer",
      "name": "Nice Answer",
      "rank": "bronze",
      "user_account_id": null,
      "user_display_name": null,
      "user_link": null,
      "user_profile_image": null,
      "user_reputation": null,
      "user_user_id": null,
      "user_user_type": null
    }
  ],
  "badges_count": 1,
  "has_more": false,
  "page": 1,
  "page_size": 30,
  "quota_remaining": 9987,
  "site": "stackoverflow",
  "total": 1
}
```

### Get collectives

Read particular collectives in full: their description, the tags they cover, and their official support and documentation links.

**Inputs**

- Collectives (`slugs`, text, required): Which collectives to read. The list is fetched from the chosen site; change the site above and refresh to see that site's collectives.
- Site (`site`, text): Which Stack Exchange site to ask. Defaults to Stack Overflow. The list is fetched from Stack Exchange when the connection is made; use the refresh button if a new site has launched since.
- Sort by (`sort`, text): How to order the results. Defaults to name. The minimum and maximum below bound whichever field this sorts by, which is why there is a value pair and a date pair: use the one that matches the sort chosen here. One of: `name`.
- Order (`order`, text): Which end of the sort to start from. Defaults to descending. One of: `desc` (Descending: highest or newest first), `asc` (Ascending: lowest or oldest first).
- Created on or after (`from_date`, date): Only include things created on or after this date. Leave empty for no lower bound.
- Created on or before (`to_date`, date): Only include things created on or before this date. Leave empty for no upper bound.
- Results per page (`page_size`, number): How many results to return, 1–100. Defaults to 30. From 1 to 100.
- Page (`page`, number): Which page of results to return, starting at 1. The result says whether there are more. At least 1.

**Outputs**

- `collectives` (list)
- `collectives_count` (number)
- `has_more` (true/false)
- `page` (number)
- `page_size` (number)
- `quota_remaining` (number)
- `site` (text)
- `slugs` (text)
- `total` (number)

**Example output**

```json
{
  "collectives": [
    {
      "description": "A collective for developers who want to share their knowledge and learn more about mobile development practices and platforms",
      "external_links": [
        {
          "link": "https://stackoverflow.com/contact?topic=15",
          "type": "support"
        }
      ],
      "link": "/collectives/mobile-dev",
      "name": "Mobile Development",
      "slug": "mobile-dev",
      "tags": [
        "ios",
        "android"
      ]
    }
  ],
  "collectives_count": 1,
  "has_more": false,
  "page": 1,
  "page_size": 30,
  "quota_remaining": 9987,
  "site": "stackoverflow",
  "slugs": "mobile-dev",
  "total": 1
}
```

### Get comments

Read up to 100 comments by their numeric ids, in one request. Turn on 'Include post body' to get the text as well as the score and the author: a comment id on a question's timeline carries neither until you read it here.

**Inputs**

- Comment IDs (`comment_ids`, text, required): The comments to read, by their numeric ids. Up to 100 at a time, separated by commas.
- Site (`site`, text): Which Stack Exchange site to ask. Defaults to Stack Overflow. The list is fetched from Stack Exchange when the connection is made; use the refresh button if a new site has launched since.
- Sort by (`sort`, text): How to order the results. Defaults to creation date. The minimum and maximum below bound whichever field this sorts by, which is why there is a value pair and a date pair: use the one that matches the sort chosen here. One of: `creation` (Creation date), `votes` (Score).
- Order (`order`, text): Which end of the sort to start from. Defaults to descending. One of: `desc` (Descending: highest or newest first), `asc` (Ascending: lowest or oldest first).
- Created on or after (`from_date`, date): Only include things created on or after this date. Leave empty for no lower bound.
- Created on or before (`to_date`, date): Only include things created on or before this date. Leave empty for no upper bound.
- Minimum value (`min_value`, number): Lower bound on the field the sort orders by, when that field is a number: a score for the score sort, a reputation for the reputation sort. Use the date bounds instead when sorting by a date.
- Maximum value (`max_value`, number): Upper bound on the field the sort orders by, when that field is a number. Use the date bounds instead when sorting by a date.
- Minimum date (`min_date`, date): Lower bound on the field the sort orders by, when that field is a date: last activity for the activity sort, for instance. Use the value bounds instead when sorting by a number.
- Maximum date (`max_date`, date): Upper bound on the field the sort orders by, when that field is a date. Use the value bounds instead when sorting by a number.
- Results per page (`page_size`, number): How many results to return, 1–100. Defaults to 30. From 1 to 100.
- Page (`page`, number): Which page of results to return, starting at 1. The result says whether there are more. At least 1.
- Include post body (`include_body`, true/false): Fetch the full text of each post as well as its summary. Off by default because bodies are large; turn it on to summarise, search or quote the text. Each result then carries the site's HTML in 'body' and a plain-text rendering in 'body_text'.

**Outputs**

- `comment_ids` (text)
- `comments` (list)
- `comments_count` (number)
- `has_more` (true/false)
- `page` (number)
- `page_size` (number)
- `quota_remaining` (number)
- `site` (text)
- `total` (number)

**Example output**

```json
{
  "comment_ids": "30146633",
  "comments": [
    {
      "body": null,
      "body_text": null,
      "comment_id": 30146633,
      "content_license": "CC BY-SA 3.0",
      "creation_date": 1385468758,
      "creation_date_iso": "2013-11-26T12:25:58+00:00",
      "edited": false,
      "link": null,
      "owner_account_id": 972992,
      "owner_display_name": "cptloop",
      "owner_link": "https://stackoverflow.com/users/995110/cptloop",
      "owner_profile_image": "https://www.gravatar.com/avatar/0d7e2371e0c63bfb4ef7bfa37561b0ee?s=256",
      "owner_reputation": 695,
      "owner_user_id": 995110,
      "owner_user_type": "registered",
      "post_id": 11304926,
      "post_type": null,
      "reply_to_account_id": null,
      "reply_to_display_name": null,
      "reply_to_link": null,
      "reply_to_profile_image": null,
      "reply_to_reputation": null,
      "reply_to_user_id": null,
      "reply_to_user_type": null,
      "score": 2049
    }
  ],
  "comments_count": 1,
  "has_more": false,
  "page": 1,
  "page_size": 30,
  "quota_remaining": 9987,
  "site": "stackoverflow",
  "total": 1
}
```

### Get comments on answers

Get the comments left on one or more answers: the corrections and caveats under an answer, which frequently matter as much as the answer itself.

**Inputs**

- Answer IDs (`answer_ids`, text, required): The answers to read, by their numeric ids. Up to 100 at a time, separated by commas.
- Site (`site`, text): Which Stack Exchange site to ask. Defaults to Stack Overflow. The list is fetched from Stack Exchange when the connection is made; use the refresh button if a new site has launched since.
- Sort by (`sort`, text): How to order the results. Defaults to creation date. The minimum and maximum below bound whichever field this sorts by, which is why there is a value pair and a date pair: use the one that matches the sort chosen here. One of: `creation` (Creation date), `votes` (Score).
- Order (`order`, text): Which end of the sort to start from. Defaults to descending. One of: `desc` (Descending: highest or newest first), `asc` (Ascending: lowest or oldest first).
- Created on or after (`from_date`, date): Only include things created on or after this date. Leave empty for no lower bound.
- Created on or before (`to_date`, date): Only include things created on or before this date. Leave empty for no upper bound.
- Minimum value (`min_value`, number): Lower bound on the field the sort orders by, when that field is a number: a score for the score sort, a reputation for the reputation sort. Use the date bounds instead when sorting by a date.
- Maximum value (`max_value`, number): Upper bound on the field the sort orders by, when that field is a number. Use the date bounds instead when sorting by a date.
- Minimum date (`min_date`, date): Lower bound on the field the sort orders by, when that field is a date: last activity for the activity sort, for instance. Use the value bounds instead when sorting by a number.
- Maximum date (`max_date`, date): Upper bound on the field the sort orders by, when that field is a date. Use the value bounds instead when sorting by a number.
- Results per page (`page_size`, number): How many results to return, 1–100. Defaults to 30. From 1 to 100.
- Page (`page`, number): Which page of results to return, starting at 1. The result says whether there are more. At least 1.
- Include post body (`include_body`, true/false): Fetch the full text of each post as well as its summary. Off by default because bodies are large; turn it on to summarise, search or quote the text. Each result then carries the site's HTML in 'body' and a plain-text rendering in 'body_text'.

**Outputs**

- `answer_ids` (text)
- `comments` (list)
- `comments_count` (number)
- `has_more` (true/false)
- `page` (number)
- `page_size` (number)
- `quota_remaining` (number)
- `site` (text)
- `total` (number)

**Example output**

```json
{
  "answer_ids": "11227902",
  "comments": [
    {
      "body": null,
      "body_text": null,
      "comment_id": 30146633,
      "content_license": "CC BY-SA 3.0",
      "creation_date": 1385468758,
      "creation_date_iso": "2013-11-26T12:25:58+00:00",
      "edited": false,
      "link": null,
      "owner_account_id": 972992,
      "owner_display_name": "cptloop",
      "owner_link": "https://stackoverflow.com/users/995110/cptloop",
      "owner_profile_image": "https://www.gravatar.com/avatar/0d7e2371e0c63bfb4ef7bfa37561b0ee?s=256",
      "owner_reputation": 695,
      "owner_user_id": 995110,
      "owner_user_type": "registered",
      "post_id": 11304926,
      "post_type": null,
      "reply_to_account_id": null,
      "reply_to_display_name": null,
      "reply_to_link": null,
      "reply_to_profile_image": null,
      "reply_to_reputation": null,
      "reply_to_user_id": null,
      "reply_to_user_type": null,
      "score": 2049
    }
  ],
  "comments_count": 1,
  "has_more": false,
  "page": 1,
  "page_size": 30,
  "quota_remaining": 9987,
  "site": "stackoverflow",
  "total": 12
}
```

### Get comments on posts

Get the comments on posts of either kind, by post id. Use this when the id came from somewhere that does not say whether it is a question or an answer.

**Inputs**

- Post IDs (`post_ids`, text, required): The posts to read, by their numeric ids. A post id is what a comment, a revision and a suggested edit all point at, and it is the same number as the question or answer id. Up to 100 at a time, separated by commas.
- Site (`site`, text): Which Stack Exchange site to ask. Defaults to Stack Overflow. The list is fetched from Stack Exchange when the connection is made; use the refresh button if a new site has launched since.
- Sort by (`sort`, text): How to order the results. Defaults to creation date. The minimum and maximum below bound whichever field this sorts by, which is why there is a value pair and a date pair: use the one that matches the sort chosen here. One of: `creation` (Creation date), `votes` (Score).
- Order (`order`, text): Which end of the sort to start from. Defaults to descending. One of: `desc` (Descending: highest or newest first), `asc` (Ascending: lowest or oldest first).
- Created on or after (`from_date`, date): Only include things created on or after this date. Leave empty for no lower bound.
- Created on or before (`to_date`, date): Only include things created on or before this date. Leave empty for no upper bound.
- Minimum value (`min_value`, number): Lower bound on the field the sort orders by, when that field is a number: a score for the score sort, a reputation for the reputation sort. Use the date bounds instead when sorting by a date.
- Maximum value (`max_value`, number): Upper bound on the field the sort orders by, when that field is a number. Use the date bounds instead when sorting by a date.
- Minimum date (`min_date`, date): Lower bound on the field the sort orders by, when that field is a date: last activity for the activity sort, for instance. Use the value bounds instead when sorting by a number.
- Maximum date (`max_date`, date): Upper bound on the field the sort orders by, when that field is a date. Use the value bounds instead when sorting by a number.
- Results per page (`page_size`, number): How many results to return, 1–100. Defaults to 30. From 1 to 100.
- Page (`page`, number): Which page of results to return, starting at 1. The result says whether there are more. At least 1.
- Include post body (`include_body`, true/false): Fetch the full text of each post as well as its summary. Off by default because bodies are large; turn it on to summarise, search or quote the text. Each result then carries the site's HTML in 'body' and a plain-text rendering in 'body_text'.

**Outputs**

- `comments` (list)
- `comments_count` (number)
- `has_more` (true/false)
- `page` (number)
- `page_size` (number)
- `post_ids` (text)
- `quota_remaining` (number)
- `site` (text)
- `total` (number)

**Example output**

```json
{
  "comments": [
    {
      "body": null,
      "body_text": null,
      "comment_id": 30146633,
      "content_license": "CC BY-SA 3.0",
      "creation_date": 1385468758,
      "creation_date_iso": "2013-11-26T12:25:58+00:00",
      "edited": false,
      "link": null,
      "owner_account_id": 972992,
      "owner_display_name": "cptloop",
      "owner_link": "https://stackoverflow.com/users/995110/cptloop",
      "owner_profile_image": "https://www.gravatar.com/avatar/0d7e2371e0c63bfb4ef7bfa37561b0ee?s=256",
      "owner_reputation": 695,
      "owner_user_id": 995110,
      "owner_user_type": "registered",
      "post_id": 11304926,
      "post_type": null,
      "reply_to_account_id": null,
      "reply_to_display_name": null,
      "reply_to_link": null,
      "reply_to_profile_image": null,
      "reply_to_reputation": null,
      "reply_to_user_id": null,
      "reply_to_user_type": null,
      "score": 2049
    }
  ],
  "comments_count": 1,
  "has_more": false,
  "page": 1,
  "page_size": 30,
  "post_ids": "11227809",
  "quota_remaining": 9987,
  "site": "stackoverflow",
  "total": 8
}
```

### Get comments on questions

Get the comments left on one or more questions: the clarifying back-and-forth under the question itself, which is often where the real problem gets pinned down.

**Inputs**

- Question IDs (`question_ids`, text, required): The questions to read, by their numeric ids. Up to 100 at a time, separated by commas.
- Site (`site`, text): Which Stack Exchange site to ask. Defaults to Stack Overflow. The list is fetched from Stack Exchange when the connection is made; use the refresh button if a new site has launched since.
- Sort by (`sort`, text): How to order the results. Defaults to creation date. The minimum and maximum below bound whichever field this sorts by, which is why there is a value pair and a date pair: use the one that matches the sort chosen here. One of: `creation` (Creation date), `votes` (Score).
- Order (`order`, text): Which end of the sort to start from. Defaults to descending. One of: `desc` (Descending: highest or newest first), `asc` (Ascending: lowest or oldest first).
- Created on or after (`from_date`, date): Only include things created on or after this date. Leave empty for no lower bound.
- Created on or before (`to_date`, date): Only include things created on or before this date. Leave empty for no upper bound.
- Minimum value (`min_value`, number): Lower bound on the field the sort orders by, when that field is a number: a score for the score sort, a reputation for the reputation sort. Use the date bounds instead when sorting by a date.
- Maximum value (`max_value`, number): Upper bound on the field the sort orders by, when that field is a number. Use the date bounds instead when sorting by a date.
- Minimum date (`min_date`, date): Lower bound on the field the sort orders by, when that field is a date: last activity for the activity sort, for instance. Use the value bounds instead when sorting by a number.
- Maximum date (`max_date`, date): Upper bound on the field the sort orders by, when that field is a date. Use the value bounds instead when sorting by a number.
- Results per page (`page_size`, number): How many results to return, 1–100. Defaults to 30. From 1 to 100.
- Page (`page`, number): Which page of results to return, starting at 1. The result says whether there are more. At least 1.
- Include post body (`include_body`, true/false): Fetch the full text of each post as well as its summary. Off by default because bodies are large; turn it on to summarise, search or quote the text. Each result then carries the site's HTML in 'body' and a plain-text rendering in 'body_text'.

**Outputs**

- `comments` (list)
- `comments_count` (number)
- `has_more` (true/false)
- `page` (number)
- `page_size` (number)
- `question_ids` (text)
- `quota_remaining` (number)
- `site` (text)
- `total` (number)

**Example output**

```json
{
  "comments": [
    {
      "body": null,
      "body_text": null,
      "comment_id": 30146633,
      "content_license": "CC BY-SA 3.0",
      "creation_date": 1385468758,
      "creation_date_iso": "2013-11-26T12:25:58+00:00",
      "edited": false,
      "link": null,
      "owner_account_id": 972992,
      "owner_display_name": "cptloop",
      "owner_link": "https://stackoverflow.com/users/995110/cptloop",
      "owner_profile_image": "https://www.gravatar.com/avatar/0d7e2371e0c63bfb4ef7bfa37561b0ee?s=256",
      "owner_reputation": 695,
      "owner_user_id": 995110,
      "owner_user_type": "registered",
      "post_id": 11304926,
      "post_type": null,
      "reply_to_account_id": null,
      "reply_to_display_name": null,
      "reply_to_link": null,
      "reply_to_profile_image": null,
      "reply_to_reputation": null,
      "reply_to_user_id": null,
      "reply_to_user_type": null,
      "score": 2049
    }
  ],
  "comments_count": 1,
  "has_more": false,
  "page": 1,
  "page_size": 30,
  "question_ids": "11227809",
  "quota_remaining": 9987,
  "site": "stackoverflow",
  "total": 8
}
```

### Get linked or related questions

Find the questions connected to the ones you name. 'Linked' means another question's text links to this one, which is how duplicates and follow-ups are recorded; 'Related' is the site's own similarity ranking, the list shown in a question's sidebar. Either way this is how a workflow walks outwards from one question to the rest of the conversation around it.

**Inputs**

- Question IDs (`question_ids`, text, required): The questions to read, by their numeric ids. Up to 100 at a time, separated by commas.
- Connection (`relationship`, text): Which connection to follow. Defaults to linked questions. One of: `linked` (Linked: questions whose text links to this one), `related` (Related: the site's similarity ranking).
- Site (`site`, text): Which Stack Exchange site to ask. Defaults to Stack Overflow. The list is fetched from Stack Exchange when the connection is made; use the refresh button if a new site has launched since.
- Sort by (`sort`, text): How to order the results. Defaults to last activity. The minimum and maximum below bound whichever field this sorts by, which is why there is a value pair and a date pair: use the one that matches the sort chosen here. Sorts marked (no range) order by a formula rather than a field, so they cannot be narrowed with the minimum and maximum below. One of: `activity` (Last activity), `creation` (Creation date), `votes` (Score), `rank` (How closely connected (no range)).
- Order (`order`, text): Which end of the sort to start from. Defaults to descending. One of: `desc` (Descending: highest or newest first), `asc` (Ascending: lowest or oldest first).
- Created on or after (`from_date`, date): Only include things created on or after this date. Leave empty for no lower bound.
- Created on or before (`to_date`, date): Only include things created on or before this date. Leave empty for no upper bound.
- Minimum value (`min_value`, number): Lower bound on the field the sort orders by, when that field is a number: a score for the score sort, a reputation for the reputation sort. Use the date bounds instead when sorting by a date.
- Maximum value (`max_value`, number): Upper bound on the field the sort orders by, when that field is a number. Use the date bounds instead when sorting by a date.
- Minimum date (`min_date`, date): Lower bound on the field the sort orders by, when that field is a date: last activity for the activity sort, for instance. Use the value bounds instead when sorting by a number.
- Maximum date (`max_date`, date): Upper bound on the field the sort orders by, when that field is a date. Use the value bounds instead when sorting by a number.
- Results per page (`page_size`, number): How many results to return, 1–100. Defaults to 30. From 1 to 100.
- Page (`page`, number): Which page of results to return, starting at 1. The result says whether there are more. At least 1.
- Include post body (`include_body`, true/false): Fetch the full text of each post as well as its summary. Off by default because bodies are large; turn it on to summarise, search or quote the text. Each result then carries the site's HTML in 'body' and a plain-text rendering in 'body_text'.

**Outputs**

- `has_more` (true/false)
- `page` (number)
- `page_size` (number)
- `question_ids` (text)
- `questions` (list)
- `questions_count` (number)
- `quota_remaining` (number)
- `relationship` (text)
- `site` (text)
- `total` (number)

**Example output**

```json
{
  "has_more": false,
  "page": 1,
  "page_size": 30,
  "question_ids": "11227809",
  "questions": [
    {
      "accepted_answer_id": 11227902,
      "answer_count": 25,
      "body": null,
      "body_text": null,
      "bounty_amount": null,
      "bounty_closes_date": null,
      "bounty_closes_date_iso": null,
      "closed_date": null,
      "closed_date_iso": null,
      "closed_reason": null,
      "collectives": [],
      "community_owned_date": null,
      "community_owned_date_iso": null,
      "content_license": "CC BY-SA 4.0",
      "creation_date": 1340805096,
      "creation_date_iso": "2012-06-27T13:51:36+00:00",
      "is_answered": true,
      "last_activity_date": 1775626532,
      "last_activity_date_iso": "2026-04-08T05:35:32+00:00",
      "last_edit_date": 1775626532,
      "last_edit_date_iso": "2026-04-08T05:35:32+00:00",
      "link": "https://stackoverflow.com/questions/11227809/why-is-conditional-processing-of-a-sorted-array-faster",
      "locked_date": null,
      "locked_date_iso": null,
      "owner_account_id": 31692,
      "owner_display_name": "GManNickG",
      "owner_link": "https://stackoverflow.com/users/87234/gmannickg",
      "owner_profile_image": "https://i.sstatic.net/FkjBe.png?s=256",
      "owner_reputation": 507347,
      "owner_user_id": 87234,
      "owner_user_type": "registered",
      "protected_date": 1399067470,
      "protected_date_iso": "2014-05-02T21:51:10+00:00",
      "question_id": 11227809,
      "score": 27546,
      "tags": [
        "java",
        "c++",
        "performance",
        "cpu-architecture",
        "branch-prediction"
      ],
      "title": "Why is conditional processing of a sorted array faster than of an unsorted array?",
      "view_count": 1997358
    }
  ],
  "questions_count": 1,
  "quota_remaining": 9987,
  "relationship": "linked",
  "site": "stackoverflow",
  "total": 42
}
```

### Get post revisions

Get a post's edit history, newest first: who changed it, when, what the title and tags were before, and the edit summary they left. This is how a workflow notices that an answer it relies on has been rewritten.

**Inputs**

- Post IDs (`post_ids`, text, required): The posts to read, by their numeric ids. A post id is what a comment, a revision and a suggested edit all point at, and it is the same number as the question or answer id. Up to 100 at a time, separated by commas.
- Site (`site`, text): Which Stack Exchange site to ask. Defaults to Stack Overflow. The list is fetched from Stack Exchange when the connection is made; use the refresh button if a new site has launched since.
- Created on or after (`from_date`, date): Only include things created on or after this date. Leave empty for no lower bound.
- Created on or before (`to_date`, date): Only include things created on or before this date. Leave empty for no upper bound.
- Results per page (`page_size`, number): How many results to return, 1–100. Defaults to 30. From 1 to 100.
- Page (`page`, number): Which page of results to return, starting at 1. The result says whether there are more. At least 1.
- Include post body (`include_body`, true/false): Fetch the full text of each post as well as its summary. Off by default because bodies are large; turn it on to summarise, search or quote the text. Each result then carries the site's HTML in 'body' and a plain-text rendering in 'body_text'.

**Outputs**

- `has_more` (true/false)
- `page` (number)
- `page_size` (number)
- `post_ids` (text)
- `quota_remaining` (number)
- `revisions` (list)
- `revisions_count` (number)
- `site` (text)
- `total` (number)

**Example output**

```json
{
  "has_more": false,
  "page": 1,
  "page_size": 30,
  "post_ids": "11227809",
  "quota_remaining": 9987,
  "revisions": [
    {
      "body": null,
      "body_text": null,
      "comment": "Clarified the question title",
      "content_license": "CC BY-SA 4.0",
      "creation_date": 1775626532,
      "creation_date_iso": "2026-04-08T05:35:32+00:00",
      "is_rollback": false,
      "last_tags": [
        "java",
        "c++",
        "performance"
      ],
      "last_title": "Why is processing a sorted array faster than processing an unsorted array?",
      "post_id": 11227809,
      "post_type": "question",
      "revision_guid": "4c4d0f5e-cba9-4b5f-9a1a-2ec1ba7bd4f7",
      "revision_number": 26,
      "revision_type": "single_user",
      "set_community_wiki": false,
      "tags": [
        "java",
        "c++",
        "performance"
      ],
      "title": "Why is conditional processing of a sorted array faster than of an unsorted array?",
      "user_account_id": 31692,
      "user_display_name": "GManNickG",
      "user_link": "https://stackoverflow.com/users/87234/gmannickg",
      "user_profile_image": "https://i.sstatic.net/FkjBe.png?s=256",
      "user_reputation": 507347,
      "user_user_id": 87234,
      "user_user_type": "registered"
    }
  ],
  "revisions_count": 1,
  "site": "stackoverflow",
  "total": 26
}
```

### Get posts

Read up to 100 posts by their numeric ids, whether they are questions or answers. Use this when you have an id from a comment, a revision or a suggested edit and do not yet know which kind of post it points at.

**Inputs**

- Post IDs (`post_ids`, text, required): The posts to read, by their numeric ids. A post id is what a comment, a revision and a suggested edit all point at, and it is the same number as the question or answer id. Up to 100 at a time, separated by commas.
- Site (`site`, text): Which Stack Exchange site to ask. Defaults to Stack Overflow. The list is fetched from Stack Exchange when the connection is made; use the refresh button if a new site has launched since.
- Sort by (`sort`, text): How to order the results. Defaults to last activity. The minimum and maximum below bound whichever field this sorts by, which is why there is a value pair and a date pair: use the one that matches the sort chosen here. One of: `activity` (Last activity), `creation` (Creation date), `votes` (Score).
- Order (`order`, text): Which end of the sort to start from. Defaults to descending. One of: `desc` (Descending: highest or newest first), `asc` (Ascending: lowest or oldest first).
- Created on or after (`from_date`, date): Only include things created on or after this date. Leave empty for no lower bound.
- Created on or before (`to_date`, date): Only include things created on or before this date. Leave empty for no upper bound.
- Minimum value (`min_value`, number): Lower bound on the field the sort orders by, when that field is a number: a score for the score sort, a reputation for the reputation sort. Use the date bounds instead when sorting by a date.
- Maximum value (`max_value`, number): Upper bound on the field the sort orders by, when that field is a number. Use the date bounds instead when sorting by a date.
- Minimum date (`min_date`, date): Lower bound on the field the sort orders by, when that field is a date: last activity for the activity sort, for instance. Use the value bounds instead when sorting by a number.
- Maximum date (`max_date`, date): Upper bound on the field the sort orders by, when that field is a date. Use the value bounds instead when sorting by a number.
- Results per page (`page_size`, number): How many results to return, 1–100. Defaults to 30. From 1 to 100.
- Page (`page`, number): Which page of results to return, starting at 1. The result says whether there are more. At least 1.
- Include post body (`include_body`, true/false): Fetch the full text of each post as well as its summary. Off by default because bodies are large; turn it on to summarise, search or quote the text. Each result then carries the site's HTML in 'body' and a plain-text rendering in 'body_text'.

**Outputs**

- `has_more` (true/false)
- `page` (number)
- `page_size` (number)
- `post_ids` (text)
- `posts` (list)
- `posts_count` (number)
- `quota_remaining` (number)
- `site` (text)
- `total` (number)

**Example output**

```json
{
  "has_more": false,
  "page": 1,
  "page_size": 30,
  "post_ids": "11227809",
  "posts": [
    {
      "body": null,
      "body_text": null,
      "collectives": [],
      "content_license": "CC BY-SA 4.0",
      "creation_date": 1340805096,
      "creation_date_iso": "2012-06-27T13:51:36+00:00",
      "last_activity_date": 1775626532,
      "last_activity_date_iso": "2026-04-08T05:35:32+00:00",
      "last_edit_date": 1775626532,
      "last_edit_date_iso": "2026-04-08T05:35:32+00:00",
      "link": "https://stackoverflow.com/q/11227809",
      "owner_account_id": 31692,
      "owner_display_name": "GManNickG",
      "owner_link": "https://stackoverflow.com/users/87234/gmannickg",
      "owner_profile_image": "https://i.sstatic.net/FkjBe.png?s=256",
      "owner_reputation": 507347,
      "owner_user_id": 87234,
      "owner_user_type": "registered",
      "post_id": 11227809,
      "post_type": "question",
      "score": 27546,
      "title": null
    }
  ],
  "posts_count": 1,
  "quota_remaining": 9987,
  "site": "stackoverflow",
  "total": 1
}
```

### Get question timeline

Get everything that has happened to a question, in order: it was asked, answered, commented on, edited, voted on, closed, protected, reopened. One call answers 'what changed here' without reading four separate lists.

**Inputs**

- Question IDs (`question_ids`, text, required): The questions to read, by their numeric ids. Up to 100 at a time, separated by commas.
- Site (`site`, text): Which Stack Exchange site to ask. Defaults to Stack Overflow. The list is fetched from Stack Exchange when the connection is made; use the refresh button if a new site has launched since.
- Created on or after (`from_date`, date): Only include things created on or after this date. Leave empty for no lower bound.
- Created on or before (`to_date`, date): Only include things created on or before this date. Leave empty for no upper bound.
- Results per page (`page_size`, number): How many results to return, 1–100. Defaults to 30. From 1 to 100.
- Page (`page`, number): Which page of results to return, starting at 1. The result says whether there are more. At least 1.

**Outputs**

- `events` (list)
- `events_count` (number)
- `has_more` (true/false)
- `page` (number)
- `page_size` (number)
- `question_ids` (text)
- `quota_remaining` (number)
- `site` (text)
- `total` (number)

**Example output**

```json
{
  "events": [
    {
      "comment_id": null,
      "content_license": "CC BY-SA 4.0",
      "creation_date": 1340805402,
      "creation_date_iso": "2012-06-27T13:56:42+00:00",
      "down_vote_count": 297,
      "owner_account_id": 559988,
      "owner_display_name": "Mysticial",
      "owner_link": "https://stackoverflow.com/users/922184/mysticial",
      "owner_profile_image": "https://i.sstatic.net/h7WDB.jpg?s=256",
      "owner_reputation": 473493,
      "owner_user_id": 922184,
      "owner_user_type": "registered",
      "post_id": 11227902,
      "question_id": 11227809,
      "revision_guid": null,
      "timeline_type": "answer",
      "up_vote_count": 35296,
      "user_account_id": 559988,
      "user_display_name": "Mysticial",
      "user_link": "https://stackoverflow.com/users/922184/mysticial",
      "user_profile_image": "https://i.sstatic.net/h7WDB.jpg?s=256",
      "user_reputation": 473493,
      "user_user_id": 922184,
      "user_user_type": "registered"
    }
  ],
  "events_count": 1,
  "has_more": false,
  "page": 1,
  "page_size": 30,
  "question_ids": "11227809",
  "quota_remaining": 9987,
  "site": "stackoverflow",
  "total": 112
}
```

### Get questions

Read up to 100 questions by their numeric ids, in one request. Turn on 'Include post body' to get the question text as well as its title, score, tags and author, which is how a workflow reads a question it found somewhere else and summarises or replies to it.

**Inputs**

- Question IDs (`question_ids`, text, required): The questions to read, by their numeric ids. Up to 100 at a time, separated by commas.
- Site (`site`, text): Which Stack Exchange site to ask. Defaults to Stack Overflow. The list is fetched from Stack Exchange when the connection is made; use the refresh button if a new site has launched since.
- Sort by (`sort`, text): How to order the results. Defaults to last activity. The minimum and maximum below bound whichever field this sorts by, which is why there is a value pair and a date pair: use the one that matches the sort chosen here. One of: `activity` (Last activity), `creation` (Creation date), `votes` (Score).
- Order (`order`, text): Which end of the sort to start from. Defaults to descending. One of: `desc` (Descending: highest or newest first), `asc` (Ascending: lowest or oldest first).
- Created on or after (`from_date`, date): Only include things created on or after this date. Leave empty for no lower bound.
- Created on or before (`to_date`, date): Only include things created on or before this date. Leave empty for no upper bound.
- Minimum value (`min_value`, number): Lower bound on the field the sort orders by, when that field is a number: a score for the score sort, a reputation for the reputation sort. Use the date bounds instead when sorting by a date.
- Maximum value (`max_value`, number): Upper bound on the field the sort orders by, when that field is a number. Use the date bounds instead when sorting by a date.
- Minimum date (`min_date`, date): Lower bound on the field the sort orders by, when that field is a date: last activity for the activity sort, for instance. Use the value bounds instead when sorting by a number.
- Maximum date (`max_date`, date): Upper bound on the field the sort orders by, when that field is a date. Use the value bounds instead when sorting by a number.
- Results per page (`page_size`, number): How many results to return, 1–100. Defaults to 30. From 1 to 100.
- Page (`page`, number): Which page of results to return, starting at 1. The result says whether there are more. At least 1.
- Include post body (`include_body`, true/false): Fetch the full text of each post as well as its summary. Off by default because bodies are large; turn it on to summarise, search or quote the text. Each result then carries the site's HTML in 'body' and a plain-text rendering in 'body_text'.

**Outputs**

- `has_more` (true/false)
- `page` (number)
- `page_size` (number)
- `question_ids` (text)
- `questions` (list)
- `questions_count` (number)
- `quota_remaining` (number)
- `site` (text)
- `total` (number)

**Example output**

```json
{
  "has_more": false,
  "page": 1,
  "page_size": 30,
  "question_ids": "11227809",
  "questions": [
    {
      "accepted_answer_id": 11227902,
      "answer_count": 25,
      "body": null,
      "body_text": null,
      "bounty_amount": null,
      "bounty_closes_date": null,
      "bounty_closes_date_iso": null,
      "closed_date": null,
      "closed_date_iso": null,
      "closed_reason": null,
      "collectives": [],
      "community_owned_date": null,
      "community_owned_date_iso": null,
      "content_license": "CC BY-SA 4.0",
      "creation_date": 1340805096,
      "creation_date_iso": "2012-06-27T13:51:36+00:00",
      "is_answered": true,
      "last_activity_date": 1775626532,
      "last_activity_date_iso": "2026-04-08T05:35:32+00:00",
      "last_edit_date": 1775626532,
      "last_edit_date_iso": "2026-04-08T05:35:32+00:00",
      "link": "https://stackoverflow.com/questions/11227809/why-is-conditional-processing-of-a-sorted-array-faster",
      "locked_date": null,
      "locked_date_iso": null,
      "owner_account_id": 31692,
      "owner_display_name": "GManNickG",
      "owner_link": "https://stackoverflow.com/users/87234/gmannickg",
      "owner_profile_image": "https://i.sstatic.net/FkjBe.png?s=256",
      "owner_reputation": 507347,
      "owner_user_id": 87234,
      "owner_user_type": "registered",
      "protected_date": 1399067470,
      "protected_date_iso": "2014-05-02T21:51:10+00:00",
      "question_id": 11227809,
      "score": 27546,
      "tags": [
        "java",
        "c++",
        "performance",
        "cpu-architecture",
        "branch-prediction"
      ],
      "title": "Why is conditional processing of a sorted array faster than of an unsorted array?",
      "view_count": 1997358
    }
  ],
  "questions_count": 1,
  "quota_remaining": 9987,
  "site": "stackoverflow",
  "total": 1
}
```

### Get related tags

Get the tags that most often appear alongside the ones you name: the neighbourhood a technology sits in. Useful for widening a tag watch beyond the one term you started with.

**Inputs**

- Tags (`tag_names`, text, required): The tags to find neighbours for, separated by commas.
- Site (`site`, text): Which Stack Exchange site to ask. Defaults to Stack Overflow. The list is fetched from Stack Exchange when the connection is made; use the refresh button if a new site has launched since.
- Results per page (`page_size`, number): How many results to return, 1–100. Defaults to 30. From 1 to 100.
- Page (`page`, number): Which page of results to return, starting at 1. The result says whether there are more. At least 1.

**Outputs**

- `has_more` (true/false)
- `page` (number)
- `page_size` (number)
- `quota_remaining` (number)
- `site` (text)
- `tag_names` (text)
- `tags` (list)
- `tags_count` (number)
- `total` (number)

**Example output**

```json
{
  "has_more": false,
  "page": 1,
  "page_size": 30,
  "quota_remaining": 9987,
  "site": "stackoverflow",
  "tag_names": "python",
  "tags": [
    {
      "collectives": [],
      "count": 2204910,
      "has_synonyms": true,
      "is_moderator_only": false,
      "is_required": false,
      "last_activity_date": null,
      "last_activity_date_iso": null,
      "name": "python",
      "synonyms": [],
      "user_id": null
    }
  ],
  "tags_count": 1,
  "total": 30
}
```

### Get revisions by ID

Read revisions by their GUIDs rather than by post: the ids that appear on a question's timeline and in a revision-history URL. Use it to read one specific edit rather than a post's whole history.

**Inputs**

- Revision IDs (`revision_guids`, text, required): The revision GUIDs to read, up to 100 at a time separated by commas. They appear on a question's timeline and in the revision-history URL.
- Site (`site`, text): Which Stack Exchange site to ask. Defaults to Stack Overflow. The list is fetched from Stack Exchange when the connection is made; use the refresh button if a new site has launched since.
- Created on or after (`from_date`, date): Only include things created on or after this date. Leave empty for no lower bound.
- Created on or before (`to_date`, date): Only include things created on or before this date. Leave empty for no upper bound.
- Results per page (`page_size`, number): How many results to return, 1–100. Defaults to 30. From 1 to 100.
- Page (`page`, number): Which page of results to return, starting at 1. The result says whether there are more. At least 1.
- Include post body (`include_body`, true/false): Fetch the full text of each post as well as its summary. Off by default because bodies are large; turn it on to summarise, search or quote the text. Each result then carries the site's HTML in 'body' and a plain-text rendering in 'body_text'.

**Outputs**

- `has_more` (true/false)
- `page` (number)
- `page_size` (number)
- `quota_remaining` (number)
- `revision_guids` (text)
- `revisions` (list)
- `revisions_count` (number)
- `site` (text)
- `total` (number)

**Example output**

```json
{
  "has_more": false,
  "page": 1,
  "page_size": 30,
  "quota_remaining": 9987,
  "revision_guids": "4c4d0f5e-cba9-4b5f-9a1a-2ec1ba7bd4f7",
  "revisions": [
    {
      "body": null,
      "body_text": null,
      "comment": "Clarified the question title",
      "content_license": "CC BY-SA 4.0",
      "creation_date": 1775626532,
      "creation_date_iso": "2026-04-08T05:35:32+00:00",
      "is_rollback": false,
      "last_tags": [
        "java",
        "c++",
        "performance"
      ],
      "last_title": "Why is processing a sorted array faster than processing an unsorted array?",
      "post_id": 11227809,
      "post_type": "question",
      "revision_guid": "4c4d0f5e-cba9-4b5f-9a1a-2ec1ba7bd4f7",
      "revision_number": 26,
      "revision_type": "single_user",
      "set_community_wiki": false,
      "tags": [
        "java",
        "c++",
        "performance"
      ],
      "title": "Why is conditional processing of a sorted array faster than of an unsorted array?",
      "user_account_id": 31692,
      "user_display_name": "GManNickG",
      "user_link": "https://stackoverflow.com/users/87234/gmannickg",
      "user_profile_image": "https://i.sstatic.net/FkjBe.png?s=256",
      "user_reputation": 507347,
      "user_user_id": 87234,
      "user_user_type": "registered"
    }
  ],
  "revisions_count": 1,
  "site": "stackoverflow",
  "total": 1
}
```

### Get site statistics

Get a site's totals and its current pace: how many questions, answers, comments, votes, badges and users it has, how many questions are unanswered, and how many questions, answers and badges it is producing per minute. One request, so it is the cheap check to put at the top of a report.

**Inputs**

- Site (`site`, text): Which Stack Exchange site to ask. Defaults to Stack Overflow. The list is fetched from Stack Exchange when the connection is made; use the refresh button if a new site has launched since.

**Outputs**

- `info` (object)
- `quota_remaining` (number)
- `site` (text)

**Example output**

```json
{
  "info": {
    "answers_per_minute": 3.8,
    "api_revision": "2026.5.26.43284",
    "badges_per_minute": 5.79,
    "new_active_users": 0,
    "questions_per_minute": 2.55,
    "total_accepted": 12396431,
    "total_answers": 36102908,
    "total_badges": 55073016,
    "total_comments": 118510187,
    "total_questions": 24249874,
    "total_unanswered": 7218586,
    "total_users": 31498705,
    "total_votes": 216153600
  },
  "quota_remaining": 9987,
  "site": "stackoverflow"
}
```

### Get suggested edits

Read up to 100 suggested edits by their numeric ids, in one request, and see for each whether it was approved, rejected, or is still waiting on review.

**Inputs**

- Suggested edit IDs (`suggested_edit_ids`, text, required): The suggested edits to read, by their numeric ids. Up to 100 at a time, separated by commas.
- Site (`site`, text): Which Stack Exchange site to ask. Defaults to Stack Overflow. The list is fetched from Stack Exchange when the connection is made; use the refresh button if a new site has launched since.
- Sort by (`sort`, text): How to order the results. Defaults to creation date. The minimum and maximum below bound whichever field this sorts by, which is why there is a value pair and a date pair: use the one that matches the sort chosen here. One of: `creation` (Creation date), `approval` (Date approved), `rejection` (Date rejected).
- Order (`order`, text): Which end of the sort to start from. Defaults to descending. One of: `desc` (Descending: highest or newest first), `asc` (Ascending: lowest or oldest first).
- Created on or after (`from_date`, date): Only include things created on or after this date. Leave empty for no lower bound.
- Created on or before (`to_date`, date): Only include things created on or before this date. Leave empty for no upper bound.
- Minimum date (`min_date`, date): Lower bound on the field the sort orders by, when that field is a date: last activity for the activity sort, for instance. Use the value bounds instead when sorting by a number.
- Maximum date (`max_date`, date): Upper bound on the field the sort orders by, when that field is a date. Use the value bounds instead when sorting by a number.
- Results per page (`page_size`, number): How many results to return, 1–100. Defaults to 30. From 1 to 100.
- Page (`page`, number): Which page of results to return, starting at 1. The result says whether there are more. At least 1.
- Include post body (`include_body`, true/false): Fetch the full text of each post as well as its summary. Off by default because bodies are large; turn it on to summarise, search or quote the text. Each result then carries the site's HTML in 'body' and a plain-text rendering in 'body_text'.

**Outputs**

- `has_more` (true/false)
- `page` (number)
- `page_size` (number)
- `quota_remaining` (number)
- `site` (text)
- `suggested_edit_ids` (text)
- `suggested_edits` (list)
- `suggested_edits_count` (number)
- `total` (number)

**Example output**

```json
{
  "has_more": false,
  "page": 1,
  "page_size": 30,
  "quota_remaining": 9987,
  "site": "stackoverflow",
  "suggested_edit_ids": "44123456",
  "suggested_edits": [
    {
      "approval_date": null,
      "approval_date_iso": null,
      "body": null,
      "body_text": null,
      "comment": "Fixed spelling and formatting",
      "creation_date": 1787780000,
      "creation_date_iso": "2026-08-26T17:33:20+00:00",
      "post_id": 79998507,
      "post_type": "question",
      "proposing_user_account_id": 912336,
      "proposing_user_display_name": "Igor",
      "proposing_user_link": "https://stackoverflow.com/users/945871/igor",
      "proposing_user_profile_image": "https://www.gravatar.com/avatar/b9b646cc701a?s=256",
      "proposing_user_reputation": 6506,
      "proposing_user_user_id": 945871,
      "proposing_user_user_type": "registered",
      "rejection_date": null,
      "rejection_date_iso": null,
      "suggested_edit_id": 44123456,
      "tags": [
        "css",
        "right-to-left"
      ],
      "title": "RTL vs LTR layout"
    }
  ],
  "suggested_edits_count": 1,
  "total": 1
}
```

### Get suggested edits on posts

Get the edits people have proposed on given posts, whether approved, rejected or still waiting. An edit with neither an approval nor a rejection date is one still in the review queue.

**Inputs**

- Post IDs (`post_ids`, text, required): The posts to read, by their numeric ids. A post id is what a comment, a revision and a suggested edit all point at, and it is the same number as the question or answer id. Up to 100 at a time, separated by commas.
- Site (`site`, text): Which Stack Exchange site to ask. Defaults to Stack Overflow. The list is fetched from Stack Exchange when the connection is made; use the refresh button if a new site has launched since.
- Sort by (`sort`, text): How to order the results. Defaults to creation date. The minimum and maximum below bound whichever field this sorts by, which is why there is a value pair and a date pair: use the one that matches the sort chosen here. One of: `creation` (Creation date), `approval` (Date approved), `rejection` (Date rejected).
- Order (`order`, text): Which end of the sort to start from. Defaults to descending. One of: `desc` (Descending: highest or newest first), `asc` (Ascending: lowest or oldest first).
- Created on or after (`from_date`, date): Only include things created on or after this date. Leave empty for no lower bound.
- Created on or before (`to_date`, date): Only include things created on or before this date. Leave empty for no upper bound.
- Minimum date (`min_date`, date): Lower bound on the field the sort orders by, when that field is a date: last activity for the activity sort, for instance. Use the value bounds instead when sorting by a number.
- Maximum date (`max_date`, date): Upper bound on the field the sort orders by, when that field is a date. Use the value bounds instead when sorting by a number.
- Results per page (`page_size`, number): How many results to return, 1–100. Defaults to 30. From 1 to 100.
- Page (`page`, number): Which page of results to return, starting at 1. The result says whether there are more. At least 1.
- Include post body (`include_body`, true/false): Fetch the full text of each post as well as its summary. Off by default because bodies are large; turn it on to summarise, search or quote the text. Each result then carries the site's HTML in 'body' and a plain-text rendering in 'body_text'.

**Outputs**

- `has_more` (true/false)
- `page` (number)
- `page_size` (number)
- `post_ids` (text)
- `quota_remaining` (number)
- `site` (text)
- `suggested_edits` (list)
- `suggested_edits_count` (number)
- `total` (number)

**Example output**

```json
{
  "has_more": false,
  "page": 1,
  "page_size": 30,
  "post_ids": "11227809",
  "quota_remaining": 9987,
  "site": "stackoverflow",
  "suggested_edits": [
    {
      "approval_date": null,
      "approval_date_iso": null,
      "body": null,
      "body_text": null,
      "comment": "Fixed spelling and formatting",
      "creation_date": 1787780000,
      "creation_date_iso": "2026-08-26T17:33:20+00:00",
      "post_id": 79998507,
      "post_type": "question",
      "proposing_user_account_id": 912336,
      "proposing_user_display_name": "Igor",
      "proposing_user_link": "https://stackoverflow.com/users/945871/igor",
      "proposing_user_profile_image": "https://www.gravatar.com/avatar/b9b646cc701a?s=256",
      "proposing_user_reputation": 6506,
      "proposing_user_user_id": 945871,
      "proposing_user_user_type": "registered",
      "rejection_date": null,
      "rejection_date_iso": null,
      "suggested_edit_id": 44123456,
      "tags": [
        "css",
        "right-to-left"
      ],
      "title": "RTL vs LTR layout"
    }
  ],
  "suggested_edits_count": 1,
  "total": 3
}
```

### Get tag synonyms

Get the tags that are silently rewritten to another one: 'python3' becomes 'python-3.x' the moment it is applied. Name tags to see what maps onto them, or leave it empty for the site's whole synonym list. This is what explains a tag search coming back full of a different tag.

**Inputs**

- Tags (`tag_names`, text): The tags to look up synonyms for. Leave empty for every synonym on the site.
- Site (`site`, text): Which Stack Exchange site to ask. Defaults to Stack Overflow. The list is fetched from Stack Exchange when the connection is made; use the refresh button if a new site has launched since.
- Sort by (`sort`, text): How to order the results. Defaults to creation date. The minimum and maximum below bound whichever field this sorts by, which is why there is a value pair and a date pair: use the one that matches the sort chosen here. One of: `creation` (Creation date), `applied` (Times applied), `activity` (Last applied).
- Order (`order`, text): Which end of the sort to start from. Defaults to descending. One of: `desc` (Descending: highest or newest first), `asc` (Ascending: lowest or oldest first).
- Created on or after (`from_date`, date): Only include things created on or after this date. Leave empty for no lower bound.
- Created on or before (`to_date`, date): Only include things created on or before this date. Leave empty for no upper bound.
- Minimum value (`min_value`, number): Lower bound on the field the sort orders by, when that field is a number: a score for the score sort, a reputation for the reputation sort. Use the date bounds instead when sorting by a date.
- Maximum value (`max_value`, number): Upper bound on the field the sort orders by, when that field is a number. Use the date bounds instead when sorting by a date.
- Minimum date (`min_date`, date): Lower bound on the field the sort orders by, when that field is a date: last activity for the activity sort, for instance. Use the value bounds instead when sorting by a number.
- Maximum date (`max_date`, date): Upper bound on the field the sort orders by, when that field is a date. Use the value bounds instead when sorting by a number.
- Results per page (`page_size`, number): How many results to return, 1–100. Defaults to 30. From 1 to 100.
- Page (`page`, number): Which page of results to return, starting at 1. The result says whether there are more. At least 1.

**Outputs**

- `has_more` (true/false)
- `page` (number)
- `page_size` (number)
- `quota_remaining` (number)
- `site` (text)
- `synonyms` (list)
- `synonyms_count` (number)
- `tag_names` (text)
- `total` (number)

**Example output**

```json
{
  "has_more": false,
  "page": 1,
  "page_size": 30,
  "quota_remaining": 9987,
  "site": "stackoverflow",
  "synonyms": [
    {
      "applied_count": 8106,
      "creation_date": 1284314483,
      "creation_date_iso": "2010-09-12T16:41:23+00:00",
      "from_tag": "python3",
      "last_applied_date": 1787699160,
      "last_applied_date_iso": "2026-08-25T19:06:00+00:00",
      "to_tag": "python-3.x"
    }
  ],
  "synonyms_count": 1,
  "tag_names": "python",
  "total": 5312
}
```

### Get tag wikis

Get what a tag is for, in the community's own words: the one-line excerpt the site shows on hover, and, with 'Include post body' on, the full wiki. This is the definition to quote when explaining why a question was tagged the way it was.

**Inputs**

- Tags (`tag_names`, text, required): The tags whose wikis to read, separated by commas.
- Site (`site`, text): Which Stack Exchange site to ask. Defaults to Stack Overflow. The list is fetched from Stack Exchange when the connection is made; use the refresh button if a new site has launched since.
- Results per page (`page_size`, number): How many results to return, 1–100. Defaults to 30. From 1 to 100.
- Page (`page`, number): Which page of results to return, starting at 1. The result says whether there are more. At least 1.
- Include post body (`include_body`, true/false): Fetch the full text of each post as well as its summary. Off by default because bodies are large; turn it on to summarise, search or quote the text. Each result then carries the site's HTML in 'body' and a plain-text rendering in 'body_text'.

**Outputs**

- `has_more` (true/false)
- `page` (number)
- `page_size` (number)
- `quota_remaining` (number)
- `site` (text)
- `tag_names` (text)
- `total` (number)
- `wikis` (list)
- `wikis_count` (number)

**Example output**

```json
{
  "has_more": false,
  "page": 1,
  "page_size": 30,
  "quota_remaining": 9987,
  "site": "stackoverflow",
  "tag_names": "python",
  "total": 1,
  "wikis": [
    {
      "body": null,
      "body_last_edit_date": 1640995200,
      "body_last_edit_date_iso": "2022-01-01T00:00:00+00:00",
      "body_text": null,
      "excerpt": "Python is a dynamically typed, multi-purpose programming language.",
      "excerpt_last_edit_date": 1640995200,
      "excerpt_last_edit_date_iso": "2022-01-01T00:00:00+00:00",
      "tag_name": "python"
    }
  ],
  "wikis_count": 1
}
```

### Get tags

Read particular tags by name and get their question counts and flags: whether the tag has synonyms, is moderator-only, or is required. This is how a workflow checks that a tag exists and how busy it is before subscribing to it.

**Inputs**

- Tags (`tag_names`, text, required): The tags to read, separated by commas.
- Site (`site`, text): Which Stack Exchange site to ask. Defaults to Stack Overflow. The list is fetched from Stack Exchange when the connection is made; use the refresh button if a new site has launched since.
- Sort by (`sort`, text): How to order the results. Defaults to number of questions. The minimum and maximum below bound whichever field this sorts by, which is why there is a value pair and a date pair: use the one that matches the sort chosen here. One of: `popular` (Number of questions), `activity` (Last activity), `name`.
- Order (`order`, text): Which end of the sort to start from. Defaults to descending. One of: `desc` (Descending: highest or newest first), `asc` (Ascending: lowest or oldest first).
- Created on or after (`from_date`, date): Only include things created on or after this date. Leave empty for no lower bound.
- Created on or before (`to_date`, date): Only include things created on or before this date. Leave empty for no upper bound.
- Minimum value (`min_value`, number): Lower bound on the field the sort orders by, when that field is a number: a score for the score sort, a reputation for the reputation sort. Use the date bounds instead when sorting by a date.
- Maximum value (`max_value`, number): Upper bound on the field the sort orders by, when that field is a number. Use the date bounds instead when sorting by a date.
- Minimum date (`min_date`, date): Lower bound on the field the sort orders by, when that field is a date: last activity for the activity sort, for instance. Use the value bounds instead when sorting by a number.
- Maximum date (`max_date`, date): Upper bound on the field the sort orders by, when that field is a date. Use the value bounds instead when sorting by a number.
- Results per page (`page_size`, number): How many results to return, 1–100. Defaults to 30. From 1 to 100.
- Page (`page`, number): Which page of results to return, starting at 1. The result says whether there are more. At least 1.

**Outputs**

- `has_more` (true/false)
- `page` (number)
- `page_size` (number)
- `quota_remaining` (number)
- `site` (text)
- `tag_names` (text)
- `tags` (list)
- `tags_count` (number)
- `total` (number)

**Example output**

```json
{
  "has_more": false,
  "page": 1,
  "page_size": 30,
  "quota_remaining": 9987,
  "site": "stackoverflow",
  "tag_names": "python",
  "tags": [
    {
      "collectives": [],
      "count": 2204910,
      "has_synonyms": true,
      "is_moderator_only": false,
      "is_required": false,
      "last_activity_date": null,
      "last_activity_date_iso": null,
      "name": "python",
      "synonyms": [],
      "user_id": null
    }
  ],
  "tags_count": 1,
  "total": 1
}
```

### Get the questions answers belong to

Given answer ids, get the questions they were posted on. An excerpt search returns answers as often as questions, and an answer on its own has no title or tags; this is the step that gets them.

**Inputs**

- Answer IDs (`answer_ids`, text, required): The answers to read, by their numeric ids. Up to 100 at a time, separated by commas.
- Site (`site`, text): Which Stack Exchange site to ask. Defaults to Stack Overflow. The list is fetched from Stack Exchange when the connection is made; use the refresh button if a new site has launched since.
- Sort by (`sort`, text): How to order the results. Defaults to last activity. The minimum and maximum below bound whichever field this sorts by, which is why there is a value pair and a date pair: use the one that matches the sort chosen here. One of: `activity` (Last activity), `creation` (Creation date), `votes` (Score).
- Order (`order`, text): Which end of the sort to start from. Defaults to descending. One of: `desc` (Descending: highest or newest first), `asc` (Ascending: lowest or oldest first).
- Created on or after (`from_date`, date): Only include things created on or after this date. Leave empty for no lower bound.
- Created on or before (`to_date`, date): Only include things created on or before this date. Leave empty for no upper bound.
- Minimum value (`min_value`, number): Lower bound on the field the sort orders by, when that field is a number: a score for the score sort, a reputation for the reputation sort. Use the date bounds instead when sorting by a date.
- Maximum value (`max_value`, number): Upper bound on the field the sort orders by, when that field is a number. Use the date bounds instead when sorting by a date.
- Minimum date (`min_date`, date): Lower bound on the field the sort orders by, when that field is a date: last activity for the activity sort, for instance. Use the value bounds instead when sorting by a number.
- Maximum date (`max_date`, date): Upper bound on the field the sort orders by, when that field is a date. Use the value bounds instead when sorting by a number.
- Results per page (`page_size`, number): How many results to return, 1–100. Defaults to 30. From 1 to 100.
- Page (`page`, number): Which page of results to return, starting at 1. The result says whether there are more. At least 1.
- Include post body (`include_body`, true/false): Fetch the full text of each post as well as its summary. Off by default because bodies are large; turn it on to summarise, search or quote the text. Each result then carries the site's HTML in 'body' and a plain-text rendering in 'body_text'.

**Outputs**

- `answer_ids` (text)
- `has_more` (true/false)
- `page` (number)
- `page_size` (number)
- `questions` (list)
- `questions_count` (number)
- `quota_remaining` (number)
- `site` (text)
- `total` (number)

**Example output**

```json
{
  "answer_ids": "11227902",
  "has_more": false,
  "page": 1,
  "page_size": 30,
  "questions": [
    {
      "accepted_answer_id": 11227902,
      "answer_count": 25,
      "body": null,
      "body_text": null,
      "bounty_amount": null,
      "bounty_closes_date": null,
      "bounty_closes_date_iso": null,
      "closed_date": null,
      "closed_date_iso": null,
      "closed_reason": null,
      "collectives": [],
      "community_owned_date": null,
      "community_owned_date_iso": null,
      "content_license": "CC BY-SA 4.0",
      "creation_date": 1340805096,
      "creation_date_iso": "2012-06-27T13:51:36+00:00",
      "is_answered": true,
      "last_activity_date": 1775626532,
      "last_activity_date_iso": "2026-04-08T05:35:32+00:00",
      "last_edit_date": 1775626532,
      "last_edit_date_iso": "2026-04-08T05:35:32+00:00",
      "link": "https://stackoverflow.com/questions/11227809/why-is-conditional-processing-of-a-sorted-array-faster",
      "locked_date": null,
      "locked_date_iso": null,
      "owner_account_id": 31692,
      "owner_display_name": "GManNickG",
      "owner_link": "https://stackoverflow.com/users/87234/gmannickg",
      "owner_profile_image": "https://i.sstatic.net/FkjBe.png?s=256",
      "owner_reputation": 507347,
      "owner_user_id": 87234,
      "owner_user_type": "registered",
      "protected_date": 1399067470,
      "protected_date_iso": "2014-05-02T21:51:10+00:00",
      "question_id": 11227809,
      "score": 27546,
      "tags": [
        "java",
        "c++",
        "performance",
        "cpu-architecture",
        "branch-prediction"
      ],
      "title": "Why is conditional processing of a sorted array faster than of an unsorted array?",
      "view_count": 1997358
    }
  ],
  "questions_count": 1,
  "quota_remaining": 9987,
  "site": "stackoverflow",
  "total": 1
}
```

### Get the tags a user is active in

Get the tags one or more users have been active in, with each tag's site-wide question count. For how well they have done in each one, use 'Get a user's top tags'.

**Inputs**

- User IDs (`user_ids`, text, required): The users to read, by their numeric ids on this site. A user id is site-specific (the same person has a different one on each site) and appears in their profile URL. Up to 100 at a time, separated by commas.
- Site (`site`, text): Which Stack Exchange site to ask. Defaults to Stack Overflow. The list is fetched from Stack Exchange when the connection is made; use the refresh button if a new site has launched since.
- Sort by (`sort`, text): How to order the results. Defaults to number of questions. The minimum and maximum below bound whichever field this sorts by, which is why there is a value pair and a date pair: use the one that matches the sort chosen here. One of: `popular` (Number of questions), `activity` (Last activity), `name`.
- Order (`order`, text): Which end of the sort to start from. Defaults to descending. One of: `desc` (Descending: highest or newest first), `asc` (Ascending: lowest or oldest first).
- Created on or after (`from_date`, date): Only include things created on or after this date. Leave empty for no lower bound.
- Created on or before (`to_date`, date): Only include things created on or before this date. Leave empty for no upper bound.
- Minimum value (`min_value`, number): Lower bound on the field the sort orders by, when that field is a number: a score for the score sort, a reputation for the reputation sort. Use the date bounds instead when sorting by a date.
- Maximum value (`max_value`, number): Upper bound on the field the sort orders by, when that field is a number. Use the date bounds instead when sorting by a date.
- Minimum date (`min_date`, date): Lower bound on the field the sort orders by, when that field is a date: last activity for the activity sort, for instance. Use the value bounds instead when sorting by a number.
- Maximum date (`max_date`, date): Upper bound on the field the sort orders by, when that field is a date. Use the value bounds instead when sorting by a number.
- Results per page (`page_size`, number): How many results to return, 1–100. Defaults to 30. From 1 to 100.
- Page (`page`, number): Which page of results to return, starting at 1. The result says whether there are more. At least 1.

**Outputs**

- `has_more` (true/false)
- `page` (number)
- `page_size` (number)
- `quota_remaining` (number)
- `site` (text)
- `tags` (list)
- `tags_count` (number)
- `total` (number)
- `user_ids` (text)

**Example output**

```json
{
  "has_more": false,
  "page": 1,
  "page_size": 30,
  "quota_remaining": 9987,
  "site": "stackoverflow",
  "tags": [
    {
      "collectives": [],
      "count": 2204910,
      "has_synonyms": true,
      "is_moderator_only": false,
      "is_required": false,
      "last_activity_date": null,
      "last_activity_date_iso": null,
      "name": "python",
      "synonyms": [],
      "user_id": null
    }
  ],
  "tags_count": 1,
  "total": 1462,
  "user_ids": "22656"
}
```

### Get users

Read up to 100 user profiles by their numeric ids on this site, in one request. Every post this integration returns carries its author's id, so this is how a workflow turns the person who wrote something into their reputation, badges, location and network account id.

**Inputs**

- User IDs (`user_ids`, text, required): The users to read, by their numeric ids on this site. A user id is site-specific (the same person has a different one on each site) and appears in their profile URL. Up to 100 at a time, separated by commas.
- Site (`site`, text): Which Stack Exchange site to ask. Defaults to Stack Overflow. The list is fetched from Stack Exchange when the connection is made; use the refresh button if a new site has launched since.
- Sort by (`sort`, text): How to order the results. Defaults to reputation. The minimum and maximum below bound whichever field this sorts by, which is why there is a value pair and a date pair: use the one that matches the sort chosen here. One of: `reputation`, `creation` (Creation date), `name`, `modified` (Last modified).
- Order (`order`, text): Which end of the sort to start from. Defaults to descending. One of: `desc` (Descending: highest or newest first), `asc` (Ascending: lowest or oldest first).
- Created on or after (`from_date`, date): Only include things created on or after this date. Leave empty for no lower bound.
- Created on or before (`to_date`, date): Only include things created on or before this date. Leave empty for no upper bound.
- Minimum value (`min_value`, number): Lower bound on the field the sort orders by, when that field is a number: a score for the score sort, a reputation for the reputation sort. Use the date bounds instead when sorting by a date.
- Maximum value (`max_value`, number): Upper bound on the field the sort orders by, when that field is a number. Use the date bounds instead when sorting by a date.
- Minimum date (`min_date`, date): Lower bound on the field the sort orders by, when that field is a date: last activity for the activity sort, for instance. Use the value bounds instead when sorting by a number.
- Maximum date (`max_date`, date): Upper bound on the field the sort orders by, when that field is a date. Use the value bounds instead when sorting by a number.
- Results per page (`page_size`, number): How many results to return, 1–100. Defaults to 30. From 1 to 100.
- Page (`page`, number): Which page of results to return, starting at 1. The result says whether there are more. At least 1.

**Outputs**

- `has_more` (true/false)
- `page` (number)
- `page_size` (number)
- `quota_remaining` (number)
- `site` (text)
- `total` (number)
- `user_ids` (text)
- `users` (list)
- `users_count` (number)

**Example output**

```json
{
  "has_more": false,
  "page": 1,
  "page_size": 30,
  "quota_remaining": 9987,
  "site": "stackoverflow",
  "total": 1,
  "user_ids": "22656",
  "users": [
    {
      "about_me": null,
      "accept_rate": 86,
      "account_id": 11683,
      "bronze_badges": 9360,
      "collectives": [
        "Google Cloud"
      ],
      "creation_date": 1222430705,
      "creation_date_iso": "2008-09-26T12:05:05+00:00",
      "display_name": "Jon Skeet",
      "gold_badges": 895,
      "is_employee": false,
      "last_access_date": 1787770005,
      "last_access_date_iso": "2026-08-26T18:46:45+00:00",
      "last_modified_date": 1787447403,
      "last_modified_date_iso": "2026-08-23T01:10:03+00:00",
      "link": "https://stackoverflow.com/users/22656/jon-skeet",
      "location": "Reading, United Kingdom",
      "profile_image": "https://www.gravatar.com/avatar/6d8ebb117e8d83d74ea95fbdd0f87e13?s=256",
      "reputation": 1529430,
      "reputation_change_day": 10,
      "reputation_change_month": 448,
      "reputation_change_quarter": 1090,
      "reputation_change_week": 50,
      "reputation_change_year": 7616,
      "silver_badges": 9321,
      "timed_penalty_date": null,
      "timed_penalty_date_iso": null,
      "user_id": 22656,
      "user_type": "registered",
      "website_url": "http://csharpindepth.com"
    }
  ],
  "users_count": 1
}
```

### List answers

Read the site's answers as one stream, newest activity first by default. Sorted by score with a date window this is 'the best answers written this month'; sorted by creation it is the site's live answer feed.

**Inputs**

- Site (`site`, text): Which Stack Exchange site to ask. Defaults to Stack Overflow. The list is fetched from Stack Exchange when the connection is made; use the refresh button if a new site has launched since.
- Sort by (`sort`, text): How to order the results. Defaults to last activity. The minimum and maximum below bound whichever field this sorts by, which is why there is a value pair and a date pair: use the one that matches the sort chosen here. One of: `activity` (Last activity), `creation` (Creation date), `votes` (Score).
- Order (`order`, text): Which end of the sort to start from. Defaults to descending. One of: `desc` (Descending: highest or newest first), `asc` (Ascending: lowest or oldest first).
- Created on or after (`from_date`, date): Only include things created on or after this date. Leave empty for no lower bound.
- Created on or before (`to_date`, date): Only include things created on or before this date. Leave empty for no upper bound.
- Minimum value (`min_value`, number): Lower bound on the field the sort orders by, when that field is a number: a score for the score sort, a reputation for the reputation sort. Use the date bounds instead when sorting by a date.
- Maximum value (`max_value`, number): Upper bound on the field the sort orders by, when that field is a number. Use the date bounds instead when sorting by a date.
- Minimum date (`min_date`, date): Lower bound on the field the sort orders by, when that field is a date: last activity for the activity sort, for instance. Use the value bounds instead when sorting by a number.
- Maximum date (`max_date`, date): Upper bound on the field the sort orders by, when that field is a date. Use the value bounds instead when sorting by a number.
- Results per page (`page_size`, number): How many results to return, 1–100. Defaults to 30. From 1 to 100.
- Page (`page`, number): Which page of results to return, starting at 1. The result says whether there are more. At least 1.
- Include post body (`include_body`, true/false): Fetch the full text of each post as well as its summary. Off by default because bodies are large; turn it on to summarise, search or quote the text. Each result then carries the site's HTML in 'body' and a plain-text rendering in 'body_text'.

**Outputs**

- `answers` (list)
- `answers_count` (number)
- `has_more` (true/false)
- `page` (number)
- `page_size` (number)
- `quota_remaining` (number)
- `site` (text)
- `total` (number)

**Example output**

```json
{
  "answers": [
    {
      "answer_id": 11227902,
      "body": null,
      "body_text": null,
      "collectives": [],
      "community_owned_date": null,
      "community_owned_date_iso": null,
      "content_license": "CC BY-SA 4.0",
      "creation_date": 1340805402,
      "creation_date_iso": "2012-06-27T13:56:42+00:00",
      "is_accepted": true,
      "last_activity_date": 1709573833,
      "last_activity_date_iso": "2024-03-04T17:37:13+00:00",
      "last_edit_date": 1709573833,
      "last_edit_date_iso": "2024-03-04T17:37:13+00:00",
      "link": null,
      "locked_date": null,
      "locked_date_iso": null,
      "owner_account_id": 559988,
      "owner_display_name": "Mysticial",
      "owner_link": "https://stackoverflow.com/users/922184/mysticial",
      "owner_profile_image": "https://i.sstatic.net/h7WDB.jpg?s=256",
      "owner_reputation": 473493,
      "owner_user_id": 922184,
      "owner_user_type": "registered",
      "question_id": 11227809,
      "score": 35296,
      "title": null
    }
  ],
  "answers_count": 1,
  "has_more": false,
  "page": 1,
  "page_size": 30,
  "quota_remaining": 9987,
  "site": "stackoverflow",
  "total": 36102908
}
```

### List badges

List a site's badges. They come in two kinds: the named ones every site defines (Nice Answer, Populist, Sheriff) and the tag ones minted per tag as people earn them, of which there are tens of thousands. Choose one kind or read both, and narrow by name.

**Inputs**

- Which badges (`badge_type`, text): Defaults to both kinds together. One of: `all` (All badges), `named` (Named badges only), `tag_based` (Tag badges only).
- Name contains (`in_name`, text): Only include badges whose name contains this. Leave empty for all of them.
- Site (`site`, text): Which Stack Exchange site to ask. Defaults to Stack Overflow. The list is fetched from Stack Exchange when the connection is made; use the refresh button if a new site has launched since.
- Sort by (`sort`, text): How to order the results. Defaults to rank: gold, silver, bronze. The minimum and maximum below bound whichever field this sorts by, which is why there is a value pair and a date pair: use the one that matches the sort chosen here. Sorting by badge type is only published for 'All badges'. One of: `rank` (Rank: gold, silver, bronze), `name`, `type` (Badge type).
- Order (`order`, text): Which end of the sort to start from. Defaults to descending. One of: `desc` (Descending: highest or newest first), `asc` (Ascending: lowest or oldest first).
- Created on or after (`from_date`, date): Only include things created on or after this date. Leave empty for no lower bound.
- Created on or before (`to_date`, date): Only include things created on or before this date. Leave empty for no upper bound.
- Minimum date (`min_date`, date): Lower bound on the field the sort orders by, when that field is a date: last activity for the activity sort, for instance. Use the value bounds instead when sorting by a number.
- Maximum date (`max_date`, date): Upper bound on the field the sort orders by, when that field is a date. Use the value bounds instead when sorting by a number.
- Results per page (`page_size`, number): How many results to return, 1–100. Defaults to 30. From 1 to 100.
- Page (`page`, number): Which page of results to return, starting at 1. The result says whether there are more. At least 1.

**Outputs**

- `badge_type` (text)
- `badges` (list)
- `badges_count` (number)
- `has_more` (true/false)
- `in_name` (text)
- `page` (number)
- `page_size` (number)
- `quota_remaining` (number)
- `site` (text)
- `total` (number)

**Example output**

```json
{
  "badge_type": "all",
  "badges": [
    {
      "award_count": 1288401,
      "badge_id": 17,
      "badge_type": "named",
      "description": null,
      "link": "https://stackoverflow.com/badges/17/nice-answer",
      "name": "Nice Answer",
      "rank": "bronze",
      "user_account_id": null,
      "user_display_name": null,
      "user_link": null,
      "user_profile_image": null,
      "user_reputation": null,
      "user_user_id": null,
      "user_user_type": null
    }
  ],
  "badges_count": 1,
  "has_more": false,
  "in_name": null,
  "page": 1,
  "page_size": 30,
  "quota_remaining": 9987,
  "site": "stackoverflow",
  "total": 39764
}
```

### List collectives

List a site's collectives (the vendor-run communities inside it, such as Google Cloud or Mobile Development), with the tags each one covers and the slug the other collective actions take.

**Inputs**

- Site (`site`, text): Which Stack Exchange site to ask. Defaults to Stack Overflow. The list is fetched from Stack Exchange when the connection is made; use the refresh button if a new site has launched since.
- Sort by (`sort`, text): How to order the results. Defaults to name. The minimum and maximum below bound whichever field this sorts by, which is why there is a value pair and a date pair: use the one that matches the sort chosen here. One of: `name`.
- Order (`order`, text): Which end of the sort to start from. Defaults to descending. One of: `desc` (Descending: highest or newest first), `asc` (Ascending: lowest or oldest first).
- Created on or after (`from_date`, date): Only include things created on or after this date. Leave empty for no lower bound.
- Created on or before (`to_date`, date): Only include things created on or before this date. Leave empty for no upper bound.
- Results per page (`page_size`, number): How many results to return, 1–100. Defaults to 30. From 1 to 100.
- Page (`page`, number): Which page of results to return, starting at 1. The result says whether there are more. At least 1.

**Outputs**

- `collectives` (list)
- `collectives_count` (number)
- `has_more` (true/false)
- `page` (number)
- `page_size` (number)
- `quota_remaining` (number)
- `site` (text)
- `total` (number)

**Example output**

```json
{
  "collectives": [
    {
      "description": "A collective for developers who want to share their knowledge and learn more about mobile development practices and platforms",
      "external_links": [
        {
          "link": "https://stackoverflow.com/contact?topic=15",
          "type": "support"
        }
      ],
      "link": "/collectives/mobile-dev",
      "name": "Mobile Development",
      "slug": "mobile-dev",
      "tags": [
        "ios",
        "android"
      ]
    }
  ],
  "collectives_count": 1,
  "has_more": false,
  "page": 1,
  "page_size": 30,
  "quota_remaining": 9987,
  "site": "stackoverflow",
  "total": 17
}
```

### List comments

Read the site's comments as one stream. Sorted by score this is the site's most-upvoted commentary; with a date window it is what was said in a given period. This is the one action whose result carries no total (the API declines to count this stream), so use 'Has more' and the page number to walk it.

**Inputs**

- Site (`site`, text): Which Stack Exchange site to ask. Defaults to Stack Overflow. The list is fetched from Stack Exchange when the connection is made; use the refresh button if a new site has launched since.
- Sort by (`sort`, text): How to order the results. Defaults to creation date. The minimum and maximum below bound whichever field this sorts by, which is why there is a value pair and a date pair: use the one that matches the sort chosen here. One of: `creation` (Creation date), `votes` (Score).
- Order (`order`, text): Which end of the sort to start from. Defaults to descending. One of: `desc` (Descending: highest or newest first), `asc` (Ascending: lowest or oldest first).
- Created on or after (`from_date`, date): Only include things created on or after this date. Leave empty for no lower bound.
- Created on or before (`to_date`, date): Only include things created on or before this date. Leave empty for no upper bound.
- Minimum value (`min_value`, number): Lower bound on the field the sort orders by, when that field is a number: a score for the score sort, a reputation for the reputation sort. Use the date bounds instead when sorting by a date.
- Maximum value (`max_value`, number): Upper bound on the field the sort orders by, when that field is a number. Use the date bounds instead when sorting by a date.
- Minimum date (`min_date`, date): Lower bound on the field the sort orders by, when that field is a date: last activity for the activity sort, for instance. Use the value bounds instead when sorting by a number.
- Maximum date (`max_date`, date): Upper bound on the field the sort orders by, when that field is a date. Use the value bounds instead when sorting by a number.
- Results per page (`page_size`, number): How many results to return, 1–100. Defaults to 30. From 1 to 100.
- Page (`page`, number): Which page of results to return, starting at 1. The result says whether there are more. At least 1.
- Include post body (`include_body`, true/false): Fetch the full text of each post as well as its summary. Off by default because bodies are large; turn it on to summarise, search or quote the text. Each result then carries the site's HTML in 'body' and a plain-text rendering in 'body_text'.

**Outputs**

- `comments` (list)
- `comments_count` (number)
- `has_more` (true/false)
- `page` (number)
- `page_size` (number)
- `quota_remaining` (number)
- `site` (text)
- `total` (number)

**Example output**

```json
{
  "comments": [
    {
      "body": null,
      "body_text": null,
      "comment_id": 30146633,
      "content_license": "CC BY-SA 3.0",
      "creation_date": 1385468758,
      "creation_date_iso": "2013-11-26T12:25:58+00:00",
      "edited": false,
      "link": null,
      "owner_account_id": 972992,
      "owner_display_name": "cptloop",
      "owner_link": "https://stackoverflow.com/users/995110/cptloop",
      "owner_profile_image": "https://www.gravatar.com/avatar/0d7e2371e0c63bfb4ef7bfa37561b0ee?s=256",
      "owner_reputation": 695,
      "owner_user_id": 995110,
      "owner_user_type": "registered",
      "post_id": 11304926,
      "post_type": null,
      "reply_to_account_id": null,
      "reply_to_display_name": null,
      "reply_to_link": null,
      "reply_to_profile_image": null,
      "reply_to_reputation": null,
      "reply_to_user_id": null,
      "reply_to_user_type": null,
      "score": 2049
    }
  ],
  "comments_count": 1,
  "has_more": false,
  "page": 1,
  "page_size": 30,
  "quota_remaining": 9987,
  "site": "stackoverflow",
  "total": null
}
```

### List moderators

List a site's moderators: all of them, or only the ones the community elected rather than appointed. Useful for knowing who to reach on a site you are automating against.

**Inputs**

- Which moderators (`moderators`, text): Defaults to all moderators. One of: `all` (All moderators), `elected` (Elected moderators only).
- Site (`site`, text): Which Stack Exchange site to ask. Defaults to Stack Overflow. The list is fetched from Stack Exchange when the connection is made; use the refresh button if a new site has launched since.
- Sort by (`sort`, text): How to order the results. Defaults to reputation. The minimum and maximum below bound whichever field this sorts by, which is why there is a value pair and a date pair: use the one that matches the sort chosen here. One of: `reputation`, `creation` (Creation date), `name`, `modified` (Last modified).
- Order (`order`, text): Which end of the sort to start from. Defaults to descending. One of: `desc` (Descending: highest or newest first), `asc` (Ascending: lowest or oldest first).
- Created on or after (`from_date`, date): Only include things created on or after this date. Leave empty for no lower bound.
- Created on or before (`to_date`, date): Only include things created on or before this date. Leave empty for no upper bound.
- Minimum value (`min_value`, number): Lower bound on the field the sort orders by, when that field is a number: a score for the score sort, a reputation for the reputation sort. Use the date bounds instead when sorting by a date.
- Maximum value (`max_value`, number): Upper bound on the field the sort orders by, when that field is a number. Use the date bounds instead when sorting by a date.
- Minimum date (`min_date`, date): Lower bound on the field the sort orders by, when that field is a date: last activity for the activity sort, for instance. Use the value bounds instead when sorting by a number.
- Maximum date (`max_date`, date): Upper bound on the field the sort orders by, when that field is a date. Use the value bounds instead when sorting by a number.
- Results per page (`page_size`, number): How many results to return, 1–100. Defaults to 30. From 1 to 100.
- Page (`page`, number): Which page of results to return, starting at 1. The result says whether there are more. At least 1.

**Outputs**

- `has_more` (true/false)
- `moderators` (text)
- `page` (number)
- `page_size` (number)
- `quota_remaining` (number)
- `site` (text)
- `total` (number)
- `users` (list)
- `users_count` (number)

**Example output**

```json
{
  "has_more": false,
  "moderators": "all",
  "page": 1,
  "page_size": 30,
  "quota_remaining": 9987,
  "site": "stackoverflow",
  "total": 22,
  "users": [
    {
      "about_me": null,
      "accept_rate": 86,
      "account_id": 11683,
      "bronze_badges": 9360,
      "collectives": [
        "Google Cloud"
      ],
      "creation_date": 1222430705,
      "creation_date_iso": "2008-09-26T12:05:05+00:00",
      "display_name": "Jon Skeet",
      "gold_badges": 895,
      "is_employee": false,
      "last_access_date": 1787770005,
      "last_access_date_iso": "2026-08-26T18:46:45+00:00",
      "last_modified_date": 1787447403,
      "last_modified_date_iso": "2026-08-23T01:10:03+00:00",
      "link": "https://stackoverflow.com/users/22656/jon-skeet",
      "location": "Reading, United Kingdom",
      "profile_image": "https://www.gravatar.com/avatar/6d8ebb117e8d83d74ea95fbdd0f87e13?s=256",
      "reputation": 1529430,
      "reputation_change_day": 10,
      "reputation_change_month": 448,
      "reputation_change_quarter": 1090,
      "reputation_change_week": 50,
      "reputation_change_year": 7616,
      "silver_badges": 9321,
      "timed_penalty_date": null,
      "timed_penalty_date_iso": null,
      "user_id": 22656,
      "user_type": "registered",
      "website_url": "http://csharpindepth.com"
    }
  ],
  "users_count": 1
}
```

### List posts

Read questions and answers together as one stream, each saying which it is. Use this when a workflow does not care which kind it is looking at ('everything this site published today'), or to get the post id that comments, revisions and suggested edits are keyed on.

**Inputs**

- Site (`site`, text): Which Stack Exchange site to ask. Defaults to Stack Overflow. The list is fetched from Stack Exchange when the connection is made; use the refresh button if a new site has launched since.
- Sort by (`sort`, text): How to order the results. Defaults to last activity. The minimum and maximum below bound whichever field this sorts by, which is why there is a value pair and a date pair: use the one that matches the sort chosen here. One of: `activity` (Last activity), `creation` (Creation date), `votes` (Score).
- Order (`order`, text): Which end of the sort to start from. Defaults to descending. One of: `desc` (Descending: highest or newest first), `asc` (Ascending: lowest or oldest first).
- Created on or after (`from_date`, date): Only include things created on or after this date. Leave empty for no lower bound.
- Created on or before (`to_date`, date): Only include things created on or before this date. Leave empty for no upper bound.
- Minimum value (`min_value`, number): Lower bound on the field the sort orders by, when that field is a number: a score for the score sort, a reputation for the reputation sort. Use the date bounds instead when sorting by a date.
- Maximum value (`max_value`, number): Upper bound on the field the sort orders by, when that field is a number. Use the date bounds instead when sorting by a date.
- Minimum date (`min_date`, date): Lower bound on the field the sort orders by, when that field is a date: last activity for the activity sort, for instance. Use the value bounds instead when sorting by a number.
- Maximum date (`max_date`, date): Upper bound on the field the sort orders by, when that field is a date. Use the value bounds instead when sorting by a number.
- Results per page (`page_size`, number): How many results to return, 1–100. Defaults to 30. From 1 to 100.
- Page (`page`, number): Which page of results to return, starting at 1. The result says whether there are more. At least 1.
- Include post body (`include_body`, true/false): Fetch the full text of each post as well as its summary. Off by default because bodies are large; turn it on to summarise, search or quote the text. Each result then carries the site's HTML in 'body' and a plain-text rendering in 'body_text'.

**Outputs**

- `has_more` (true/false)
- `page` (number)
- `page_size` (number)
- `posts` (list)
- `posts_count` (number)
- `quota_remaining` (number)
- `site` (text)
- `total` (number)

**Example output**

```json
{
  "has_more": false,
  "page": 1,
  "page_size": 30,
  "posts": [
    {
      "body": null,
      "body_text": null,
      "collectives": [],
      "content_license": "CC BY-SA 4.0",
      "creation_date": 1340805096,
      "creation_date_iso": "2012-06-27T13:51:36+00:00",
      "last_activity_date": 1775626532,
      "last_activity_date_iso": "2026-04-08T05:35:32+00:00",
      "last_edit_date": 1775626532,
      "last_edit_date_iso": "2026-04-08T05:35:32+00:00",
      "link": "https://stackoverflow.com/q/11227809",
      "owner_account_id": 31692,
      "owner_display_name": "GManNickG",
      "owner_link": "https://stackoverflow.com/users/87234/gmannickg",
      "owner_profile_image": "https://i.sstatic.net/FkjBe.png?s=256",
      "owner_reputation": 507347,
      "owner_user_id": 87234,
      "owner_user_type": "registered",
      "post_id": 11227809,
      "post_type": "question",
      "score": 27546,
      "title": null
    }
  ],
  "posts_count": 1,
  "quota_remaining": 9987,
  "site": "stackoverflow",
  "total": 60352782
}
```

### List privileges

List what each reputation threshold unlocks on a site, from posting at 1 to the moderator tools at 10,000. Sites differ, so this is how to answer 'how much reputation do I need to do X here' without guessing.

**Inputs**

- Site (`site`, text): Which Stack Exchange site to ask. Defaults to Stack Overflow. The list is fetched from Stack Exchange when the connection is made; use the refresh button if a new site has launched since.
- Results per page (`page_size`, number): How many results to return, 1–100. Defaults to 30. From 1 to 100.
- Page (`page`, number): Which page of results to return, starting at 1. The result says whether there are more. At least 1.

**Outputs**

- `has_more` (true/false)
- `page` (number)
- `page_size` (number)
- `privileges` (list)
- `privileges_count` (number)
- `quota_remaining` (number)
- `site` (text)
- `total` (number)

**Example output**

```json
{
  "has_more": false,
  "page": 1,
  "page_size": 30,
  "privileges": [
    {
      "description": "Ask a question or contribute an answer, expandable usercard",
      "reputation": 1,
      "short_description": "Create posts, expandable usercard"
    }
  ],
  "privileges_count": 1,
  "quota_remaining": 9987,
  "site": "stackoverflow",
  "total": 27
}
```

### List questions

Read a site's questions: all of them, or one of the three feeds the site publishes: Featured (a bounty is open), No answers (not a single answer yet), or Unanswered (answers, but none upvoted or accepted). Filter by tag and by date, order by activity, score, creation or the site's own hot/week/month rankings, and read back each question with its tags, score, view and answer counts, whether an answer is accepted, and its author.

**Inputs**

- Feed (`feed`, text): Which of the site's question feeds to read. Defaults to all questions. 'No answers' means not one answer has been posted; 'Unanswered' is the site's own looser definition: answers exist but none has been upvoted or accepted. One of: `all` (All questions), `featured` (Featured: a bounty is open), `no_answers` (No answers at all), `unanswered` (Unanswered: no accepted or upvoted answer).
- Tagged (`tagged`, text): Only include questions carrying every one of these tags. This is an AND: two tags mean questions that have both, so more than about five will always come back empty. Leave empty for no tag filter.
- Site (`site`, text): Which Stack Exchange site to ask. Defaults to Stack Overflow. The list is fetched from Stack Exchange when the connection is made; use the refresh button if a new site has launched since.
- Sort by (`sort`, text): How to order the results. Defaults to last activity. The minimum and maximum below bound whichever field this sorts by, which is why there is a value pair and a date pair: use the one that matches the sort chosen here. Sorts marked (no range) order by a formula rather than a field, so they cannot be narrowed with the minimum and maximum below. The hot, week and month rankings are only published for the 'All questions' feed. One of: `activity` (Last activity), `creation` (Creation date), `votes` (Score), `hot` (Hot: the site's hot list (no range)), `week` (Hot this week (no range)), `month` (Hot this month (no range)).
- Order (`order`, text): Which end of the sort to start from. Defaults to descending. One of: `desc` (Descending: highest or newest first), `asc` (Ascending: lowest or oldest first).
- Created on or after (`from_date`, date): Only include things created on or after this date. Leave empty for no lower bound.
- Created on or before (`to_date`, date): Only include things created on or before this date. Leave empty for no upper bound.
- Minimum value (`min_value`, number): Lower bound on the field the sort orders by, when that field is a number: a score for the score sort, a reputation for the reputation sort. Use the date bounds instead when sorting by a date.
- Maximum value (`max_value`, number): Upper bound on the field the sort orders by, when that field is a number. Use the date bounds instead when sorting by a date.
- Minimum date (`min_date`, date): Lower bound on the field the sort orders by, when that field is a date: last activity for the activity sort, for instance. Use the value bounds instead when sorting by a number.
- Maximum date (`max_date`, date): Upper bound on the field the sort orders by, when that field is a date. Use the value bounds instead when sorting by a number.
- Results per page (`page_size`, number): How many results to return, 1–100. Defaults to 30. From 1 to 100.
- Page (`page`, number): Which page of results to return, starting at 1. The result says whether there are more. At least 1.
- Include post body (`include_body`, true/false): Fetch the full text of each post as well as its summary. Off by default because bodies are large; turn it on to summarise, search or quote the text. Each result then carries the site's HTML in 'body' and a plain-text rendering in 'body_text'.

**Outputs**

- `feed` (text)
- `has_more` (true/false)
- `page` (number)
- `page_size` (number)
- `questions` (list)
- `questions_count` (number)
- `quota_remaining` (number)
- `site` (text)
- `total` (number)

**Example output**

```json
{
  "feed": "all",
  "has_more": false,
  "page": 1,
  "page_size": 30,
  "questions": [
    {
      "accepted_answer_id": 11227902,
      "answer_count": 25,
      "body": null,
      "body_text": null,
      "bounty_amount": null,
      "bounty_closes_date": null,
      "bounty_closes_date_iso": null,
      "closed_date": null,
      "closed_date_iso": null,
      "closed_reason": null,
      "collectives": [],
      "community_owned_date": null,
      "community_owned_date_iso": null,
      "content_license": "CC BY-SA 4.0",
      "creation_date": 1340805096,
      "creation_date_iso": "2012-06-27T13:51:36+00:00",
      "is_answered": true,
      "last_activity_date": 1775626532,
      "last_activity_date_iso": "2026-04-08T05:35:32+00:00",
      "last_edit_date": 1775626532,
      "last_edit_date_iso": "2026-04-08T05:35:32+00:00",
      "link": "https://stackoverflow.com/questions/11227809/why-is-conditional-processing-of-a-sorted-array-faster",
      "locked_date": null,
      "locked_date_iso": null,
      "owner_account_id": 31692,
      "owner_display_name": "GManNickG",
      "owner_link": "https://stackoverflow.com/users/87234/gmannickg",
      "owner_profile_image": "https://i.sstatic.net/FkjBe.png?s=256",
      "owner_reputation": 507347,
      "owner_user_id": 87234,
      "owner_user_type": "registered",
      "protected_date": 1399067470,
      "protected_date_iso": "2014-05-02T21:51:10+00:00",
      "question_id": 11227809,
      "score": 27546,
      "tags": [
        "java",
        "c++",
        "performance",
        "cpu-architecture",
        "branch-prediction"
      ],
      "title": "Why is conditional processing of a sorted array faster than of an unsorted array?",
      "view_count": 1997358
    }
  ],
  "questions_count": 1,
  "quota_remaining": 9987,
  "site": "stackoverflow",
  "total": 2204910
}
```

### List sites

List every site in the Stack Exchange network (around 365 of them including each site's meta), with the exact 'site' value every other action takes, plus its URL, audience, launch date and artwork. This is the action to start from when a workflow has to work out which site to ask.

**Inputs**

- Results per page (`page_size`, number): How many results to return, 1–100. Defaults to 30. From 1 to 100.
- Page (`page`, number): Which page of results to return, starting at 1. The result says whether there are more. At least 1.

**Outputs**

- `has_more` (true/false)
- `page` (number)
- `page_size` (number)
- `quota_remaining` (number)
- `sites` (list)
- `sites_count` (number)
- `total` (number)

**Example output**

```json
{
  "has_more": true,
  "page": 1,
  "page_size": 30,
  "quota_remaining": 9987,
  "sites": [
    {
      "aliases": [
        "https://www.stackoverflow.com"
      ],
      "audience": "professional and enthusiast programmers",
      "closed_beta_date": null,
      "closed_beta_date_iso": null,
      "favicon_url": "https://stackoverflow.com/Content/Sites/stackoverflow/Img/favicon.ico",
      "high_resolution_icon_url": "https://stackoverflow.com/Content/Sites/stackoverflow/Img/apple-touch-icon@2.png",
      "icon_url": "https://stackoverflow.com/Content/Sites/stackoverflow/Img/apple-touch-icon.png",
      "launch_date": 1221436800,
      "launch_date_iso": "2008-09-15T00:00:00+00:00",
      "logo_url": "https://stackoverflow.com/Content/Sites/stackoverflow/Img/logo.png",
      "name": "Stack Overflow",
      "open_beta_date": 1217462400,
      "open_beta_date_iso": "2008-07-31T00:00:00+00:00",
      "site": "stackoverflow",
      "site_state": "normal",
      "site_type": "main_site",
      "site_url": "https://stackoverflow.com",
      "twitter_account": null
    }
  ],
  "sites_count": 1,
  "total": 365
}
```

### List suggested edits

Read the site's suggested-edit queue. Sorted by creation, newest first, the pending ones are the edits waiting on review: an edit with no approval date and no rejection date is still open. This is the action to schedule if you want to know when the queue is backing up.

**Inputs**

- Site (`site`, text): Which Stack Exchange site to ask. Defaults to Stack Overflow. The list is fetched from Stack Exchange when the connection is made; use the refresh button if a new site has launched since.
- Sort by (`sort`, text): How to order the results. Defaults to creation date. The minimum and maximum below bound whichever field this sorts by, which is why there is a value pair and a date pair: use the one that matches the sort chosen here. One of: `creation` (Creation date), `approval` (Date approved), `rejection` (Date rejected).
- Order (`order`, text): Which end of the sort to start from. Defaults to descending. One of: `desc` (Descending: highest or newest first), `asc` (Ascending: lowest or oldest first).
- Created on or after (`from_date`, date): Only include things created on or after this date. Leave empty for no lower bound.
- Created on or before (`to_date`, date): Only include things created on or before this date. Leave empty for no upper bound.
- Minimum date (`min_date`, date): Lower bound on the field the sort orders by, when that field is a date: last activity for the activity sort, for instance. Use the value bounds instead when sorting by a number.
- Maximum date (`max_date`, date): Upper bound on the field the sort orders by, when that field is a date. Use the value bounds instead when sorting by a number.
- Results per page (`page_size`, number): How many results to return, 1–100. Defaults to 30. From 1 to 100.
- Page (`page`, number): Which page of results to return, starting at 1. The result says whether there are more. At least 1.
- Include post body (`include_body`, true/false): Fetch the full text of each post as well as its summary. Off by default because bodies are large; turn it on to summarise, search or quote the text. Each result then carries the site's HTML in 'body' and a plain-text rendering in 'body_text'.

**Outputs**

- `has_more` (true/false)
- `page` (number)
- `page_size` (number)
- `quota_remaining` (number)
- `site` (text)
- `suggested_edits` (list)
- `suggested_edits_count` (number)
- `total` (number)

**Example output**

```json
{
  "has_more": false,
  "page": 1,
  "page_size": 30,
  "quota_remaining": 9987,
  "site": "stackoverflow",
  "suggested_edits": [
    {
      "approval_date": null,
      "approval_date_iso": null,
      "body": null,
      "body_text": null,
      "comment": "Fixed spelling and formatting",
      "creation_date": 1787780000,
      "creation_date_iso": "2026-08-26T17:33:20+00:00",
      "post_id": 79998507,
      "post_type": "question",
      "proposing_user_account_id": 912336,
      "proposing_user_display_name": "Igor",
      "proposing_user_link": "https://stackoverflow.com/users/945871/igor",
      "proposing_user_profile_image": "https://www.gravatar.com/avatar/b9b646cc701a?s=256",
      "proposing_user_reputation": 6506,
      "proposing_user_user_id": 945871,
      "proposing_user_user_type": "registered",
      "rejection_date": null,
      "rejection_date_iso": null,
      "suggested_edit_id": 44123456,
      "tags": [
        "css",
        "right-to-left"
      ],
      "title": "RTL vs LTR layout"
    }
  ],
  "suggested_edits_count": 1,
  "total": 9382614
}
```

### List tags

List a site's tags with their question counts: all of them, or only the ones a moderator must apply, or only the ones a question is required to carry. Sorted by popularity this is the site's own tag page; narrow by name to find a tag you half remember.

**Inputs**

- Which tags (`tag_type`, text): Defaults to all tags. One of: `all` (All tags), `moderator_only` (Moderator-only tags), `required` (Required tags).
- Name contains (`in_name`, text): Only include tags whose name contains this. Leave empty for all of them.
- Site (`site`, text): Which Stack Exchange site to ask. Defaults to Stack Overflow. The list is fetched from Stack Exchange when the connection is made; use the refresh button if a new site has launched since.
- Sort by (`sort`, text): How to order the results. Defaults to number of questions. The minimum and maximum below bound whichever field this sorts by, which is why there is a value pair and a date pair: use the one that matches the sort chosen here. One of: `popular` (Number of questions), `activity` (Last activity), `name`.
- Order (`order`, text): Which end of the sort to start from. Defaults to descending. One of: `desc` (Descending: highest or newest first), `asc` (Ascending: lowest or oldest first).
- Created on or after (`from_date`, date): Only include things created on or after this date. Leave empty for no lower bound.
- Created on or before (`to_date`, date): Only include things created on or before this date. Leave empty for no upper bound.
- Minimum value (`min_value`, number): Lower bound on the field the sort orders by, when that field is a number: a score for the score sort, a reputation for the reputation sort. Use the date bounds instead when sorting by a date.
- Maximum value (`max_value`, number): Upper bound on the field the sort orders by, when that field is a number. Use the date bounds instead when sorting by a date.
- Minimum date (`min_date`, date): Lower bound on the field the sort orders by, when that field is a date: last activity for the activity sort, for instance. Use the value bounds instead when sorting by a number.
- Maximum date (`max_date`, date): Upper bound on the field the sort orders by, when that field is a date. Use the value bounds instead when sorting by a number.
- Results per page (`page_size`, number): How many results to return, 1–100. Defaults to 30. From 1 to 100.
- Page (`page`, number): Which page of results to return, starting at 1. The result says whether there are more. At least 1.

**Outputs**

- `has_more` (true/false)
- `in_name` (text)
- `page` (number)
- `page_size` (number)
- `quota_remaining` (number)
- `site` (text)
- `tag_type` (text)
- `tags` (list)
- `tags_count` (number)
- `total` (number)

**Example output**

```json
{
  "has_more": false,
  "in_name": null,
  "page": 1,
  "page_size": 30,
  "quota_remaining": 9987,
  "site": "stackoverflow",
  "tag_type": "all",
  "tags": [
    {
      "collectives": [],
      "count": 2204910,
      "has_synonyms": true,
      "is_moderator_only": false,
      "is_required": false,
      "last_activity_date": null,
      "last_activity_date_iso": null,
      "name": "python",
      "synonyms": [],
      "user_id": null
    }
  ],
  "tags_count": 1,
  "total": 66203
}
```

### Search for excerpts

The same search as 'Search questions', answered the way a site's own search page answers it: a highlighted snippet per hit, and answers as well as questions. Each result says whether it is a question or an answer and carries both ids, so a workflow can go straight from a matching answer to the question it sits on. Use this when you want the matching text, not the whole post.

**Inputs**

- Search words (`query`, text): Free-text search across the title and body of every question. Give this, or one of the more specific fields below.
- Words in the title (`title`, text): Only match questions whose title contains these words.
- Words in the body (`body`, text): Only match questions whose body contains these words.
- Tagged (`tagged`, text): Only match questions carrying every one of these tags. Leave empty for no tag filter.
- Not tagged (`not_tagged`, text): Exclude questions carrying any of these tags.
- Asked by user ID (`user_id`, number): Only match questions asked by this user.
- Links to URL (`url`, text): Only match questions whose body links to this URL or domain: how to find every question mentioning your documentation.
- At least this many answers (`min_answers`, number): Only match questions with at least this many answers. At least 0.
- At least this many views (`min_views`, number): Only match questions viewed at least this many times. At least 0.
- Has an accepted answer (`accepted`, text): Whether the question must have, or must not have, an accepted answer. Defaults to either. One of: `any` (Either), `yes`, `no`.
- Closed (`closed`, text): Whether the question must be, or must not be, closed. Defaults to either. One of: `any` (Either), `yes`, `no`.
- Migrated (`migrated`, text): Whether the question must have been, or must not have been, migrated from another site. Defaults to either. One of: `any` (Either), `yes`, `no`.
- Has a notice (`has_notice`, text): Whether the question must be carrying, or must not be carrying, a moderator notice. Defaults to either. One of: `any` (Either), `yes`, `no`.
- Community wiki (`wiki`, text): Whether the question must be, or must not be, community wiki. Defaults to either. One of: `any` (Either), `yes`, `no`.
- Site (`site`, text): Which Stack Exchange site to ask. Defaults to Stack Overflow. The list is fetched from Stack Exchange when the connection is made; use the refresh button if a new site has launched since.
- Sort by (`sort`, text): How to order the results. Defaults to last activity. The minimum and maximum below bound whichever field this sorts by, which is why there is a value pair and a date pair: use the one that matches the sort chosen here. Sorts marked (no range) order by a formula rather than a field, so they cannot be narrowed with the minimum and maximum below. One of: `activity` (Last activity), `creation` (Creation date), `votes` (Score), `relevance` (Relevance (no range)).
- Order (`order`, text): Which end of the sort to start from. Defaults to descending. One of: `desc` (Descending: highest or newest first), `asc` (Ascending: lowest or oldest first).
- Created on or after (`from_date`, date): Only include things created on or after this date. Leave empty for no lower bound.
- Created on or before (`to_date`, date): Only include things created on or before this date. Leave empty for no upper bound.
- Minimum value (`min_value`, number): Lower bound on the field the sort orders by, when that field is a number: a score for the score sort, a reputation for the reputation sort. Use the date bounds instead when sorting by a date.
- Maximum value (`max_value`, number): Upper bound on the field the sort orders by, when that field is a number. Use the date bounds instead when sorting by a date.
- Minimum date (`min_date`, date): Lower bound on the field the sort orders by, when that field is a date: last activity for the activity sort, for instance. Use the value bounds instead when sorting by a number.
- Maximum date (`max_date`, date): Upper bound on the field the sort orders by, when that field is a date. Use the value bounds instead when sorting by a number.
- Results per page (`page_size`, number): How many results to return, 1–100. Defaults to 30. From 1 to 100.
- Page (`page`, number): Which page of results to return, starting at 1. The result says whether there are more. At least 1.

**Outputs**

- `has_more` (true/false)
- `page` (number)
- `page_size` (number)
- `query` (text)
- `quota_remaining` (number)
- `results` (list)
- `results_count` (number)
- `site` (text)
- `total` (number)

**Example output**

```json
{
  "has_more": false,
  "page": 1,
  "page_size": 30,
  "query": "pandas",
  "quota_remaining": 9987,
  "results": [
    {
      "answer_count": null,
      "answer_id": 79998482,
      "body": null,
      "body_text": null,
      "creation_date": 1787776873,
      "creation_date_iso": "2026-08-26T16:41:13+00:00",
      "equivalent_tag_search": [
        "pandas"
      ],
      "excerpt": "Iterate over the generator directly to save memory \u2026",
      "excerpt_text": "Iterate over the generator directly to save memory \u2026",
      "has_accepted_answer": null,
      "is_accepted": false,
      "is_answered": false,
      "item_type": "answer",
      "last_activity_date": 1787776873,
      "last_activity_date_iso": "2026-08-26T16:41:13+00:00",
      "question_id": 49475489,
      "question_score": 5,
      "score": 0,
      "tags": [
        "python",
        "pandas",
        "multiprocessing"
      ],
      "title": "Why does memory consumption increase dramatically in Pool.map() multiprocessing?"
    }
  ],
  "results_count": 1,
  "site": "stackoverflow",
  "total": 1893
}
```

### Search question titles

Search titles and tags only: the API's deliberately narrow search. Its one distinctive trick is that its tag list is an OR: each result carries at least one of the tags given, where every other tag filter in this integration requires all of them. That makes it the way to watch several tags at once. For anything more, use 'Search questions'.

**Inputs**

- Words in the title (`in_title`, text): Words to match in the question title. Give this, tags, or both; the API requires at least one of them.
- Tagged with any of (`tagged`, text): Match questions carrying at least one of these tags. Unlike everywhere else, this is an OR.
- Not tagged (`not_tagged`, text): Exclude questions carrying any of these tags. Only applied when 'Tagged with any of' is set as well.
- Site (`site`, text): Which Stack Exchange site to ask. Defaults to Stack Overflow. The list is fetched from Stack Exchange when the connection is made; use the refresh button if a new site has launched since.
- Sort by (`sort`, text): How to order the results. Defaults to last activity. The minimum and maximum below bound whichever field this sorts by, which is why there is a value pair and a date pair: use the one that matches the sort chosen here. Sorts marked (no range) order by a formula rather than a field, so they cannot be narrowed with the minimum and maximum below. One of: `activity` (Last activity), `creation` (Creation date), `votes` (Score), `relevance` (Relevance (no range)).
- Order (`order`, text): Which end of the sort to start from. Defaults to descending. One of: `desc` (Descending: highest or newest first), `asc` (Ascending: lowest or oldest first).
- Created on or after (`from_date`, date): Only include things created on or after this date. Leave empty for no lower bound.
- Created on or before (`to_date`, date): Only include things created on or before this date. Leave empty for no upper bound.
- Minimum value (`min_value`, number): Lower bound on the field the sort orders by, when that field is a number: a score for the score sort, a reputation for the reputation sort. Use the date bounds instead when sorting by a date.
- Maximum value (`max_value`, number): Upper bound on the field the sort orders by, when that field is a number. Use the date bounds instead when sorting by a date.
- Minimum date (`min_date`, date): Lower bound on the field the sort orders by, when that field is a date: last activity for the activity sort, for instance. Use the value bounds instead when sorting by a number.
- Maximum date (`max_date`, date): Upper bound on the field the sort orders by, when that field is a date. Use the value bounds instead when sorting by a number.
- Results per page (`page_size`, number): How many results to return, 1–100. Defaults to 30. From 1 to 100.
- Page (`page`, number): Which page of results to return, starting at 1. The result says whether there are more. At least 1.
- Include post body (`include_body`, true/false): Fetch the full text of each post as well as its summary. Off by default because bodies are large; turn it on to summarise, search or quote the text. Each result then carries the site's HTML in 'body' and a plain-text rendering in 'body_text'.

**Outputs**

- `has_more` (true/false)
- `in_title` (text)
- `page` (number)
- `page_size` (number)
- `questions` (list)
- `questions_count` (number)
- `quota_remaining` (number)
- `site` (text)
- `total` (number)

**Example output**

```json
{
  "has_more": false,
  "in_title": "branch prediction",
  "page": 1,
  "page_size": 30,
  "questions": [
    {
      "accepted_answer_id": 11227902,
      "answer_count": 25,
      "body": null,
      "body_text": null,
      "bounty_amount": null,
      "bounty_closes_date": null,
      "bounty_closes_date_iso": null,
      "closed_date": null,
      "closed_date_iso": null,
      "closed_reason": null,
      "collectives": [],
      "community_owned_date": null,
      "community_owned_date_iso": null,
      "content_license": "CC BY-SA 4.0",
      "creation_date": 1340805096,
      "creation_date_iso": "2012-06-27T13:51:36+00:00",
      "is_answered": true,
      "last_activity_date": 1775626532,
      "last_activity_date_iso": "2026-04-08T05:35:32+00:00",
      "last_edit_date": 1775626532,
      "last_edit_date_iso": "2026-04-08T05:35:32+00:00",
      "link": "https://stackoverflow.com/questions/11227809/why-is-conditional-processing-of-a-sorted-array-faster",
      "locked_date": null,
      "locked_date_iso": null,
      "owner_account_id": 31692,
      "owner_display_name": "GManNickG",
      "owner_link": "https://stackoverflow.com/users/87234/gmannickg",
      "owner_profile_image": "https://i.sstatic.net/FkjBe.png?s=256",
      "owner_reputation": 507347,
      "owner_user_id": 87234,
      "owner_user_type": "registered",
      "protected_date": 1399067470,
      "protected_date_iso": "2014-05-02T21:51:10+00:00",
      "question_id": 11227809,
      "score": 27546,
      "tags": [
        "java",
        "c++",
        "performance",
        "cpu-architecture",
        "branch-prediction"
      ],
      "title": "Why is conditional processing of a sorted array faster than of an unsorted array?",
      "view_count": 1997358
    }
  ],
  "questions_count": 1,
  "quota_remaining": 9987,
  "site": "stackoverflow",
  "total": 57
}
```

### Search questions

The fullest search the API offers, and the one most workflows want. Search words across a question's title and body, or narrow to the title alone, the body alone, a tag, a linking URL or an author; require a minimum answer or view count; and switch on whether the question is answered, closed, migrated, wiki or carrying a notice. Returns whole questions, ranked by relevance, score, activity or age.

**Inputs**

- Search words (`query`, text): Free-text search across the title and body of every question. Give this, or one of the more specific fields below.
- Words in the title (`title`, text): Only match questions whose title contains these words.
- Words in the body (`body`, text): Only match questions whose body contains these words.
- Tagged (`tagged`, text): Only match questions carrying every one of these tags. Leave empty for no tag filter.
- Not tagged (`not_tagged`, text): Exclude questions carrying any of these tags.
- Asked by user ID (`user_id`, number): Only match questions asked by this user.
- Links to URL (`url`, text): Only match questions whose body links to this URL or domain: how to find every question mentioning your documentation.
- At least this many answers (`min_answers`, number): Only match questions with at least this many answers. At least 0.
- At least this many views (`min_views`, number): Only match questions viewed at least this many times. At least 0.
- Has an accepted answer (`accepted`, text): Whether the question must have, or must not have, an accepted answer. Defaults to either. One of: `any` (Either), `yes`, `no`.
- Closed (`closed`, text): Whether the question must be, or must not be, closed. Defaults to either. One of: `any` (Either), `yes`, `no`.
- Migrated (`migrated`, text): Whether the question must have been, or must not have been, migrated from another site. Defaults to either. One of: `any` (Either), `yes`, `no`.
- Has a notice (`has_notice`, text): Whether the question must be carrying, or must not be carrying, a moderator notice. Defaults to either. One of: `any` (Either), `yes`, `no`.
- Community wiki (`wiki`, text): Whether the question must be, or must not be, community wiki. Defaults to either. One of: `any` (Either), `yes`, `no`.
- Site (`site`, text): Which Stack Exchange site to ask. Defaults to Stack Overflow. The list is fetched from Stack Exchange when the connection is made; use the refresh button if a new site has launched since.
- Sort by (`sort`, text): How to order the results. Defaults to last activity. The minimum and maximum below bound whichever field this sorts by, which is why there is a value pair and a date pair: use the one that matches the sort chosen here. Sorts marked (no range) order by a formula rather than a field, so they cannot be narrowed with the minimum and maximum below. One of: `activity` (Last activity), `creation` (Creation date), `votes` (Score), `relevance` (Relevance (no range)).
- Order (`order`, text): Which end of the sort to start from. Defaults to descending. One of: `desc` (Descending: highest or newest first), `asc` (Ascending: lowest or oldest first).
- Created on or after (`from_date`, date): Only include things created on or after this date. Leave empty for no lower bound.
- Created on or before (`to_date`, date): Only include things created on or before this date. Leave empty for no upper bound.
- Minimum value (`min_value`, number): Lower bound on the field the sort orders by, when that field is a number: a score for the score sort, a reputation for the reputation sort. Use the date bounds instead when sorting by a date.
- Maximum value (`max_value`, number): Upper bound on the field the sort orders by, when that field is a number. Use the date bounds instead when sorting by a date.
- Minimum date (`min_date`, date): Lower bound on the field the sort orders by, when that field is a date: last activity for the activity sort, for instance. Use the value bounds instead when sorting by a number.
- Maximum date (`max_date`, date): Upper bound on the field the sort orders by, when that field is a date. Use the value bounds instead when sorting by a number.
- Results per page (`page_size`, number): How many results to return, 1–100. Defaults to 30. From 1 to 100.
- Page (`page`, number): Which page of results to return, starting at 1. The result says whether there are more. At least 1.
- Include post body (`include_body`, true/false): Fetch the full text of each post as well as its summary. Off by default because bodies are large; turn it on to summarise, search or quote the text. Each result then carries the site's HTML in 'body' and a plain-text rendering in 'body_text'.

**Outputs**

- `has_more` (true/false)
- `page` (number)
- `page_size` (number)
- `query` (text)
- `questions` (list)
- `questions_count` (number)
- `quota_remaining` (number)
- `site` (text)
- `total` (number)

**Example output**

```json
{
  "has_more": false,
  "page": 1,
  "page_size": 30,
  "query": "branch prediction",
  "questions": [
    {
      "accepted_answer_id": 11227902,
      "answer_count": 25,
      "body": null,
      "body_text": null,
      "bounty_amount": null,
      "bounty_closes_date": null,
      "bounty_closes_date_iso": null,
      "closed_date": null,
      "closed_date_iso": null,
      "closed_reason": null,
      "collectives": [],
      "community_owned_date": null,
      "community_owned_date_iso": null,
      "content_license": "CC BY-SA 4.0",
      "creation_date": 1340805096,
      "creation_date_iso": "2012-06-27T13:51:36+00:00",
      "is_answered": true,
      "last_activity_date": 1775626532,
      "last_activity_date_iso": "2026-04-08T05:35:32+00:00",
      "last_edit_date": 1775626532,
      "last_edit_date_iso": "2026-04-08T05:35:32+00:00",
      "link": "https://stackoverflow.com/questions/11227809/why-is-conditional-processing-of-a-sorted-array-faster",
      "locked_date": null,
      "locked_date_iso": null,
      "owner_account_id": 31692,
      "owner_display_name": "GManNickG",
      "owner_link": "https://stackoverflow.com/users/87234/gmannickg",
      "owner_profile_image": "https://i.sstatic.net/FkjBe.png?s=256",
      "owner_reputation": 507347,
      "owner_user_id": 87234,
      "owner_user_type": "registered",
      "protected_date": 1399067470,
      "protected_date_iso": "2014-05-02T21:51:10+00:00",
      "question_id": 11227809,
      "score": 27546,
      "tags": [
        "java",
        "c++",
        "performance",
        "cpu-architecture",
        "branch-prediction"
      ],
      "title": "Why is conditional processing of a sorted array faster than of an unsorted array?",
      "view_count": 1997358
    }
  ],
  "questions_count": 1,
  "quota_remaining": 9987,
  "site": "stackoverflow",
  "total": 318
}
```

### Search users

Find someone by display name, or read the site's leaderboard when no name is given. Each result carries reputation, badge counts, location, the reputation they have earned over the last day, week, month, quarter and year, and both ids: the site user id the other user actions take, and the network account id.

**Inputs**

- Name contains (`in_name`, text): Only include users whose display name contains this. Leave empty to read the whole site, ordered by the sort below.
- Site (`site`, text): Which Stack Exchange site to ask. Defaults to Stack Overflow. The list is fetched from Stack Exchange when the connection is made; use the refresh button if a new site has launched since.
- Sort by (`sort`, text): How to order the results. Defaults to reputation. The minimum and maximum below bound whichever field this sorts by, which is why there is a value pair and a date pair: use the one that matches the sort chosen here. One of: `reputation`, `creation` (Creation date), `name`, `modified` (Last modified).
- Order (`order`, text): Which end of the sort to start from. Defaults to descending. One of: `desc` (Descending: highest or newest first), `asc` (Ascending: lowest or oldest first).
- Created on or after (`from_date`, date): Only include things created on or after this date. Leave empty for no lower bound.
- Created on or before (`to_date`, date): Only include things created on or before this date. Leave empty for no upper bound.
- Minimum value (`min_value`, number): Lower bound on the field the sort orders by, when that field is a number: a score for the score sort, a reputation for the reputation sort. Use the date bounds instead when sorting by a date.
- Maximum value (`max_value`, number): Upper bound on the field the sort orders by, when that field is a number. Use the date bounds instead when sorting by a date.
- Minimum date (`min_date`, date): Lower bound on the field the sort orders by, when that field is a date: last activity for the activity sort, for instance. Use the value bounds instead when sorting by a number.
- Maximum date (`max_date`, date): Upper bound on the field the sort orders by, when that field is a date. Use the value bounds instead when sorting by a number.
- Results per page (`page_size`, number): How many results to return, 1–100. Defaults to 30. From 1 to 100.
- Page (`page`, number): Which page of results to return, starting at 1. The result says whether there are more. At least 1.

**Outputs**

- `has_more` (true/false)
- `in_name` (text)
- `page` (number)
- `page_size` (number)
- `quota_remaining` (number)
- `site` (text)
- `total` (number)
- `users` (list)
- `users_count` (number)

**Example output**

```json
{
  "has_more": false,
  "in_name": "skeet",
  "page": 1,
  "page_size": 30,
  "quota_remaining": 9987,
  "site": "stackoverflow",
  "total": 4,
  "users": [
    {
      "about_me": null,
      "accept_rate": 86,
      "account_id": 11683,
      "bronze_badges": 9360,
      "collectives": [
        "Google Cloud"
      ],
      "creation_date": 1222430705,
      "creation_date_iso": "2008-09-26T12:05:05+00:00",
      "display_name": "Jon Skeet",
      "gold_badges": 895,
      "is_employee": false,
      "last_access_date": 1787770005,
      "last_access_date_iso": "2026-08-26T18:46:45+00:00",
      "last_modified_date": 1787447403,
      "last_modified_date_iso": "2026-08-23T01:10:03+00:00",
      "link": "https://stackoverflow.com/users/22656/jon-skeet",
      "location": "Reading, United Kingdom",
      "profile_image": "https://www.gravatar.com/avatar/6d8ebb117e8d83d74ea95fbdd0f87e13?s=256",
      "reputation": 1529430,
      "reputation_change_day": 10,
      "reputation_change_month": 448,
      "reputation_change_quarter": 1090,
      "reputation_change_week": 50,
      "reputation_change_year": 7616,
      "silver_badges": 9321,
      "timed_penalty_date": null,
      "timed_penalty_date_iso": null,
      "user_id": 22656,
      "user_type": "registered",
      "website_url": "http://csharpindepth.com"
    }
  ],
  "users_count": 1
}
```
