# SiteCheck Stack Overflow Search

> SiteCheck Stack Overflow Search is a paid API for AI agents from api.sitecheck-api.workers.dev, paid per call via x402, $0.001/call, status unknown (last checked 2026-10-19).

Search Stack Overflow questions by keyword query and optional tag filters, returning question titles, scores, links, and optionally the accepted answer text

## Facts

- Endpoint: GET https://api.sitecheck-api.workers.dev/api/stackoverflow?utm_source=zero.xyz
- Price: $0.001/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-19
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/sitecheck-stack-overflow-search-04c92ee6
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_93fOAYDJha__XzR6AfmYC

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability sitecheck-stack-overflow-search-04c92ee6
```

Example prompt: Search Stack Overflow for questions about 'rust async trait' tagged with 'rust', only keep ones with an accepted answer, and show me up to 5 results including the accepted answer text.

## When to prefer this

Use this endpoint when you need to search Stack Overflow's community Q&A for programming solutions, especially when you want to retrieve the accepted answer text inline rather than scraping the web page yourself. Prefer this over a general web search when the goal is specifically developer technical content with community validation signals (score, accepted answer). Ideal for coding agents that need authoritative, community-vetted answers to technical questions.

## Known failure modes

- Missing required 'q' parameter returns validation error
- Limit outside 1–20 range may be rejected or clamped
- Malformed tag strings may return zero results
- Stack Exchange API rate limits upstream may cause transient failures
- Questions with no accepted answers excluded when accepted=true filter is applied

## How this service works

Stack Overflow questions matching words, optionally by tags and accepted status: title, score, answer count, accepted flag, tags and link. With answers=1 the accepted answer's first 600 characters are included. Content is CC BY-SA 4.0 (attribution per item). Stack Exchange API 2.3.

## Output

Returns a JSON object with the original query parameters, the Stack Exchange source URL, a timestamp, and an array of matching questions each containing: URL link, tags array, community score, question title, answer count, license string, accepted status boolean, and (if requested) the full text of the accepted answer.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "$schema": "https://json-schema.org/draft/2020-12/schema",
 "required": [
  "input"
 ],
 "properties": {
  "input": {
   "type": "object",
   "required": [
    "type",
    "method"
   ],
   "properties": {
    "type": {
     "type": "string",
     "const": "http"
    },
    "method": {
     "enum": [
      "GET"
     ],
     "type": "string"
    },
    "queryParams": {
     "type": "object",
     "required": [
      "q"
     ],
     "properties": {
      "q": {
       "type": "string",
       "description": "Search words"
      },
      "limit": {
       "type": "string",
       "description": "1 to 20 (default 5)"
      },
      "tagged": {
       "type": "string",
       "description": "Tags separated by commas, e.g. rust,tokio"
      },
      "answers": {
       "type": "string",
       "description": "1 to include the accepted answer's text"
      },
      "accepted": {
       "type": "string",
       "description": "true to keep only questions with an accepted answer"
      }
     }
    }
   },
   "additionalProperties": false
  },
  "output": {
   "type": "object",
   "required": [
    "type"
   ],
   "properties": {
    "type": {
     "type": "string"
    },
    "example": {
     "type": "object"
    }
   }
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "query": {
   "q": "rust async trait",
   "tagged": "rust",
   "accepted": true
  },
  "source": "https://api.stackexchange.com/2.3/search/advanced",
  "checkedAt": "2026-10-14T07:00:58.241Z",
  "questions": [
   {
    "link": "https://stackoverflow.com/questions/66859270/can-a-rust-async-function-work-without-importing-the-future-trait",
    "tags": [
     "rust",
     "future"
    ],
    "score": -1,
    "title": "Can a Rust async function work without importing the Future trait?",
    "answers": 1,
    "license": "CC BY-SA 4.0, Stack Overflow",
    "accepted": true,
    "acceptedAnswer": "How can this desugar be done if no Future trait is imported? \n \n The compiler desugars to the fully-qualified path: core::future::Future . \n \n why is the Future trait not defined in Rust itself, but instead is in a crate? \n \n It is in the standard library: std::future::Future . The Rust API documentation has a search function; I encourage you to become familiar with it. \n The Future trait was defined in the futures crate before it was added to the standard library, much like the Stream trait. Those both exist in the standard library now."
   },
   {
    "link": "https://stackoverflow.com/questions/70995999/generic-async-trait-that-returns-the-implemented-struct",
    "tags": [
     "rust"
    ],
    "score": 0,
    "title": "Generic async trait that returns the implemented Struct",
    "answers": 1,
    "license": "CC BY-SA 4.0, Stack Overflow",
    "accepted": true,
    "acceptedAnswer": "You've declared init to take 2 generic parameters: T and E . \n This means that the code that calls init has to provide the concrete types to fill in those parameters. For example, if someone was using your library, it would be totally feasible for them to write init::<i64, ()>() , and your code should deal with that. \n Because of that, when you define your impl DB for FavouritesDB , you write this: \n\nasync fn init<FavoritesDB, FavoritesError>() -> Result<FavoritesDB, FavoritesError>\n\n This is no different to writing: \n\nasync fn init<T, E>() -> Result<T, E>\n\n you've just given the type paramete"
   }
  ]
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/sitecheck-stack-overflow-search-04c92ee6/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from api.sitecheck-api.workers.dev](https://www.zero.xyz/host/api.sitecheck-api.workers.dev/llms.txt)
