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

# Context.dev: Contextdev Post Web Search

> Search the web and optionally scrape each result page to Markdown in one call, with domain, country, and freshness filters.

Search the web and optionally scrape each result page to Markdown in one call, with domain, country, and freshness filters.

> [!NOTE]
>
> Tool ID: `contextdev_post_web_search`

## Run this action

Use the TypeScript SDK for one call. Use `ctx.tools.execute(...)` inside a Play for durable calls, scheduled calls, or CSV processing.

```ts theme={"languages":{"custom":["/languages/deepline-prompt.json"]}}
import { Deepline } from 'deepline';

const deepline = await Deepline.connect();
const result = await deepline.tools.execute(
  'contextdev_post_web_search',
  {
    "query": "software companies hiring engineers"
  },
);

console.log(result.toolResponse.raw);
```

### CLI

```bash theme={"languages":{"custom":["/languages/deepline-prompt.json"]}}
deepline tools execute contextdev_post_web_search --input '{
  "query": "software companies hiring engineers"
}' --json
```

## Example response

The SDK returns this shape at `result.toolResponse.raw`. The example values illustrate the response.

```json theme={"languages":{"custom":["/languages/deepline-prompt.json"]}}
{
  "data": {
    "results": [
      {
        "url": "https://example.com",
        "title": "VP of Engineering",
        "description": "Example description",
        "relevance": "high",
        "markdown": {
          "markdown": "example",
          "code": "SUCCESS"
        }
      }
    ],
    "query": "software companies hiring engineers"
  }
}
```

Use `deepline describe contextdev_post_web_search --json` for the latest machine-readable contract.

## Input reference

Search the web and optionally scrape each result to Markdown in one round-trip.

| Name | Type | Required | Default | Details |
| - | - | - | - | - |
| `payload.query` | `string` | Yes | — | Search query. Accepts natural language as well as Google-style search operators such as `site:`, `-site:`, `inurl:`, `intitle:`, quoted phrases, and `OR`. Minimum length: 1. Maximum length: 500. |
| `payload.numResults` | `integer` | No | `10` | Number of results to request and return (10–100). Defaults to 10. Minimum: 10. Maximum: 100. |
| `payload.includeDomains` | `array` | No | — | Allowlist — only return results from these domains. Example: \["arxiv.org", "github.com"]. |
| `payload.excludeDomains` | `array` | No | — | Blocklist — drop results from these domains. Example: \["pinterest.com", "reddit.com"]. |
| `payload.freshness` | `"last_24_hours" \| "last_week" \| "last_month" \| "last_year"` | No | — | Restrict results to content published within this window. Allowed: `last_24_hours`, `last_week`, `last_month`, `last_year`. |
| `payload.country` | `"af" \| "al" \| "dz" \| "as" \| "ad" \| "ao" \| "ai" \| "aq" \| "ag" \| "ar" \| "am" \| "aw" \| "au" \| "at" \| "az" \| "bs" \| "bh" \| "bd" \| "bb" \| "by" \| "be" \| "bz" \| "bj" \| "bm" \| "bt" \| "bo" \| "ba" \| "bw" \| "bv" \| "br" \| "io" \| "bn" \| "bg" \| "bf" \| "bi" \| "kh" \| "cm" \| "ca" \| "cv" \| "ky" \| "cf" \| "td" \| "cl" \| "cn" \| "cx" \| "cc" \| "co" \| "km" \| "cg" \| "cd" \| "ck" \| "cr" \| "ci" \| "hr" \| "cu" \| "cy" \| "cz" \| "dk" \| "dj" \| "dm" \| "do" \| "ec" \| "eg" \| "sv" \| "gq" \| "er" \| "ee" \| "et" \| "fk" \| "fo" \| "fj" \| "fi" \| "fr" \| "gf" \| "pf" \| "tf" \| "ga" \| "gm" \| "ge" \| "de" \| "gh" \| "gi" \| "gr" \| "gl" \| "gd" \| "gp" \| "gu" \| "gt" \| "gn" \| "gw" \| "gy" \| "ht" \| "hm" \| "va" \| "hn" \| "hk" \| "hu" \| "is" \| "in" \| "id" \| "ir" \| "iq" \| "ie" \| "il" \| "it" \| "jm" \| "jp" \| "jo" \| "kz" \| "ke" \| "ki" \| "kp" \| "kr" \| "kw" \| "kg" \| "la" \| "lv" \| "lb" \| "ls" \| "lr" \| "ly" \| "li" \| "lt" \| "lu" \| "mo" \| "mk" \| "mg" \| "mw" \| "my" \| "mv" \| "ml" \| "mt" \| "mh" \| "mq" \| "mr" \| "mu" \| "yt" \| "mx" \| "fm" \| "md" \| "mc" \| "mn" \| "ms" \| "ma" \| "mz" \| "mm" \| "na" \| "nr" \| "np" \| "nl" \| "an" \| "nc" \| "nz" \| "ni" \| "ne" \| "ng" \| "nu" \| "nf" \| "mp" \| "no" \| "om" \| "pk" \| "pw" \| "ps" \| "pa" \| "pg" \| "py" \| "pe" \| "ph" \| "pn" \| "pl" \| "pt" \| "pr" \| "qa" \| "re" \| "ro" \| "ru" \| "rw" \| "sh" \| "kn" \| "lc" \| "pm" \| "vc" \| "ws" \| "sm" \| "st" \| "sa" \| "sn" \| "rs" \| "sc" \| "sl" \| "sg" \| "sk" \| "si" \| "sb" \| "so" \| "za" \| "gs" \| "es" \| "lk" \| "sd" \| "sr" \| "sj" \| "sz" \| "se" \| "ch" \| "sy" \| "tw" \| "tj" \| "tz" \| "th" \| "tl" \| "tg" \| "tk" \| "to" \| "tt" \| "tn" \| "tr" \| "tm" \| "tc" \| "tv" \| "ug" \| "ua" \| "ae" \| "gb" \| "us" \| "um" \| "uy" \| "uz" \| "vu" \| "ve" \| "vn" \| "vg" \| "vi" \| "wf" \| "eh" \| "ye" \| "zm" \| "zw"` | No | — | Two-letter ISO 3166-1 alpha-2 country code to localize results to a specific country (maps to Google's `gl` parameter). Example: "us", "gb", "de". Allowed: `af`, `al`, `dz`, `as`, `ad`, `ao`, `ai`, `aq`, `ag`, `ar`, `am`, `aw`, `au`, `at`, `az`, `bs`, `bh`, `bd`, `bb`, `by`, `be`, `bz`, `bj`, `bm`, `bt`, `bo`, `ba`, `bw`, `bv`, `br`, `io`, `bn`, `bg`, `bf`, `bi`, `kh`, `cm`, `ca`, `cv`, `ky`, `cf`, `td`, `cl`, `cn`, `cx`, `cc`, `co`, `km`, `cg`, `cd`, `ck`, `cr`, `ci`, `hr`, `cu`, `cy`, `cz`, See the live schema for the complete constraint. |
| `payload.queryFanout` | `boolean` | No | — | Expand the query into multiple parallel variants for broader recall. |
| `payload.markdownOptions` | `object` | No | — | Inline Markdown scraping for each result. Set `enabled: true` to activate. |
| `payload.timeoutMS` | `integer` | No | — | Optional timeout in milliseconds for the request. If the request takes longer than this value, it will be aborted with a 408 status code. Maximum allowed value is 300000ms (5 minutes). Minimum: 1000. Maximum: 300000. |
| `payload.tags` | `array` | No | — | Optional tags for tracking usage. Up to 20 tags, each 1 to 50 characters. Maximum items: 20. |

<details>
  <summary>Show raw input schema</summary>

  ### Input JSON Schema

  ```json theme={"languages":{"custom":["/languages/deepline-prompt.json"]}}
  {
    "type": "object",
    "description": "Search the web and optionally scrape each result to Markdown in one round-trip.",
    "properties": {
      "query": {
        "type": "string",
        "description": "Search query. Accepts natural language as well as Google-style search operators such as `site:`, `-site:`, `inurl:`, `intitle:`, quoted phrases, and `OR`.",
        "minLength": 1,
        "maxLength": 500
      },
      "numResults": {
        "type": "integer",
        "description": "Number of results to request and return (10–100). Defaults to 10.",
        "default": 10,
        "minimum": 10,
        "maximum": 100
      },
      "includeDomains": {
        "type": "array",
        "description": "Allowlist — only return results from these domains. Example: [\"arxiv.org\", \"github.com\"].",
        "items": {
          "type": "string"
        }
      },
      "excludeDomains": {
        "type": "array",
        "description": "Blocklist — drop results from these domains. Example: [\"pinterest.com\", \"reddit.com\"].",
        "items": {
          "type": "string"
        }
      },
      "freshness": {
        "type": "string",
        "description": "Restrict results to content published within this window.",
        "enum": [
          "last_24_hours",
          "last_week",
          "last_month",
          "last_year"
        ]
      },
      "country": {
        "type": "string",
        "description": "Two-letter ISO 3166-1 alpha-2 country code to localize results to a specific country (maps to Google's `gl` parameter). Example: \"us\", \"gb\", \"de\".",
        "enum": [
          "af",
          "al",
          "dz",
          "as",
          "ad",
          "ao",
          "ai",
          "aq",
          "ag",
          "ar",
          "am",
          "aw",
          "au",
          "at",
          "az",
          "bs",
          "bh",
          "bd",
          "bb",
          "by",
          "be",
          "bz",
          "bj",
          "bm",
          "bt",
          "bo",
          "ba",
          "bw",
          "bv",
          "br",
          "io",
          "bn",
          "bg",
          "bf",
          "bi",
          "kh",
          "cm",
          "ca",
          "cv",
          "ky",
          "cf",
          "td",
          "cl",
          "cn",
          "cx",
          "cc",
          "co",
          "km",
          "cg",
          "cd",
          "ck",
          "cr",
          "ci",
          "hr",
          "cu",
          "cy",
          "cz",
          "dk",
          "dj",
          "dm",
          "do",
          "ec",
          "eg",
          "sv",
          "gq",
          "er",
          "ee",
          "et",
          "fk",
          "fo",
          "fj",
          "fi",
          "fr",
          "gf",
          "pf",
          "tf",
          "ga",
          "gm",
          "ge",
          "de",
          "gh",
          "gi",
          "gr",
          "gl",
          "gd",
          "gp",
          "gu",
          "gt",
          "gn",
          "gw",
          "gy",
          "ht",
          "hm",
          "va",
          "hn",
          "hk",
          "hu",
          "is",
          "in",
          "id",
          "ir",
          "iq",
          "ie",
          "il",
          "it",
          "jm",
          "jp",
          "jo",
          "kz",
          "ke",
          "ki",
          "kp",
          "kr",
          "kw",
          "kg",
          "la",
          "lv",
          "lb",
          "ls",
          "lr",
          "ly",
          "li",
          "lt",
          "lu",
          "mo",
          "mk",
          "mg",
          "mw",
          "my",
          "mv",
          "ml",
          "mt",
          "mh",
          "mq",
          "mr",
          "mu",
          "yt",
          "mx",
          "fm",
          "md",
          "mc",
          "mn",
          "ms",
          "ma",
          "mz",
          "mm",
          "na",
          "nr",
          "np",
          "nl",
          "an",
          "nc",
          "nz",
          "ni",
          "ne",
          "ng",
          "nu",
          "nf",
          "mp",
          "no",
          "om",
          "pk",
          "pw",
          "ps",
          "pa",
          "pg",
          "py",
          "pe",
          "ph",
          "pn",
          "pl",
          "pt",
          "pr",
          "qa",
          "re",
          "ro",
          "ru",
          "rw",
          "sh",
          "kn",
          "lc",
          "pm",
          "vc",
          "ws",
          "sm",
          "st",
          "sa",
          "sn",
          "rs",
          "sc",
          "sl",
          "sg",
          "sk",
          "si",
          "sb",
          "so",
          "za",
          "gs",
          "es",
          "lk",
          "sd",
          "sr",
          "sj",
          "sz",
          "se",
          "ch",
          "sy",
          "tw",
          "tj",
          "tz",
          "th",
          "tl",
          "tg",
          "tk",
          "to",
          "tt",
          "tn",
          "tr",
          "tm",
          "tc",
          "tv",
          "ug",
          "ua",
          "ae",
          "gb",
          "us",
          "um",
          "uy",
          "uz",
          "vu",
          "ve",
          "vn",
          "vg",
          "vi",
          "wf",
          "eh",
          "ye",
          "zm",
          "zw"
        ]
      },
      "queryFanout": {
        "type": "boolean",
        "description": "Expand the query into multiple parallel variants for broader recall."
      },
      "markdownOptions": {
        "type": "object",
        "description": "Inline Markdown scraping for each result. Set `enabled: true` to activate.",
        "properties": {
          "enabled": {
            "type": "boolean",
            "description": "Scrape each result to Markdown. Off by default to keep search cheap and fast.",
            "default": false
          },
          "includeLinks": {
            "type": "boolean",
            "description": "Keep hyperlinks in the Markdown.",
            "default": true
          },
          "includeImages": {
            "type": "boolean",
            "description": "Emit image references in the Markdown.",
            "default": false
          },
          "shortenBase64Images": {
            "type": "boolean",
            "description": "Truncate inline base64 image payloads to keep responses small.",
            "default": true
          },
          "useMainContentOnly": {
            "type": "boolean",
            "description": "Strip nav, header, footer, and sidebar — keep only the primary article content.",
            "default": false
          },
          "pdf": {
            "type": "object",
            "description": "PDF handling. Use start/end to bound text extraction and OCR to a page range.",
            "default": {
              "shouldParse": true
            },
            "properties": {
              "shouldParse": {
                "type": "boolean",
                "description": "Parse PDF URLs. When false, PDF results are skipped with WEBSITE_ACCESS_ERROR.",
                "default": true
              },
              "start": {
                "type": "integer",
                "description": "First PDF page to parse (1-based, inclusive). Defaults to page 1.",
                "minimum": 1
              },
              "end": {
                "type": "integer",
                "description": "Last PDF page to parse (1-based, inclusive). Defaults to the final page. Must be >= start.",
                "minimum": 1
              }
            },
            "additionalProperties": false
          },
          "includeFrames": {
            "type": "boolean",
            "description": "Render iframe contents into the Markdown.",
            "default": false
          },
          "maxAgeMs": {
            "type": "integer",
            "description": "Cache TTL in ms for scraped Markdown keyed by URL + options. Default 1 day, max 30 days. Set to 0 to force a fresh scrape.",
            "default": 86400000,
            "minimum": 0,
            "maximum": 2592000000
          },
          "waitForMs": {
            "type": "integer",
            "description": "Extra wait after page load before rendering, in ms (0–30000). Useful for JS-heavy pages.",
            "minimum": 0,
            "maximum": 30000
          },
          "timeoutMS": {
            "type": "integer",
            "description": "Optional timeout in milliseconds for the request. If the request takes longer than this value, it will be aborted with a 408 status code. Maximum allowed value is 300000ms (5 minutes).",
            "minimum": 1000,
            "maximum": 300000
          }
        },
        "additionalProperties": false
      },
      "timeoutMS": {
        "type": "integer",
        "description": "Optional timeout in milliseconds for the request. If the request takes longer than this value, it will be aborted with a 408 status code. Maximum allowed value is 300000ms (5 minutes).",
        "minimum": 1000,
        "maximum": 300000
      },
      "tags": {
        "type": "array",
        "description": "Optional tags for tracking usage. Up to 20 tags, each 1 to 50 characters.",
        "maxItems": 20,
        "items": {
          "type": "string",
          "minLength": 1,
          "maxLength": 50
        }
      }
    },
    "required": [
      "query"
    ],
    "additionalProperties": false
  }
  ```
</details>

## Output reference

| Name | Type | Required | Default | Details |
| - | - | - | - | - |
| `result.data` | `object` | Yes | — | — |
| `result.data.results` | `array` | Yes | — | — |
| `result.data.results[].url` | `string` | Yes | — | — |
| `result.data.results[].title` | `string` | Yes | — | — |
| `result.data.results[].description` | `string` | Yes | — | — |
| `result.data.results[].relevance` | `"high" \| "medium" \| "low"` | Yes | — | Allowed: `high`, `medium`, `low`. |
| `result.data.results[].markdown` | `object` | Yes | — | — |
| `result.data.results[].markdown.markdown` | `string \| null` | Yes | — | — |
| `result.data.results[].markdown.code` | `"SUCCESS" \| "NOT_REQUESTED" \| "TIMEOUT" \| "CONTENT_TOO_LARGE" \| "WEBSITE_ACCESS_ERROR" \| "ERROR"` | Yes | — | Allowed: `SUCCESS`, `NOT_REQUESTED`, `TIMEOUT`, `CONTENT_TOO_LARGE`, `WEBSITE_ACCESS_ERROR`, `ERROR`. |
| `result.data.query` | `string` | Yes | — | — |
| `result.data.key_metadata` | `object` | No | — | — |
| `result.meta` | `object` | No | — | — |

<details>
  <summary>Show raw output schema</summary>

  ### Output JSON Schema

  ```json theme={"languages":{"custom":["/languages/deepline-prompt.json"]}}
  {
    "type": "object",
    "properties": {
      "data": {
        "type": "object",
        "properties": {
          "results": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "url": {
                  "type": "string"
                },
                "title": {
                  "type": "string"
                },
                "description": {
                  "type": "string"
                },
                "relevance": {
                  "type": "string",
                  "enum": [
                    "high",
                    "medium",
                    "low"
                  ]
                },
                "markdown": {
                  "type": "object",
                  "properties": {
                    "markdown": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "code": {
                      "type": "string",
                      "enum": [
                        "SUCCESS",
                        "NOT_REQUESTED",
                        "TIMEOUT",
                        "CONTENT_TOO_LARGE",
                        "WEBSITE_ACCESS_ERROR",
                        "ERROR"
                      ]
                    }
                  },
                  "required": [
                    "markdown",
                    "code"
                  ],
                  "additionalProperties": false
                }
              },
              "required": [
                "url",
                "title",
                "description",
                "relevance",
                "markdown"
              ],
              "additionalProperties": false
            }
          },
          "query": {
            "type": "string"
          },
          "key_metadata": {
            "type": "object",
            "properties": {},
            "required": [],
            "additionalProperties": false
          }
        },
        "required": [
          "results",
          "query"
        ],
        "additionalProperties": false
      },
      "meta": {
        "type": "object",
        "additionalProperties": true
      }
    },
    "required": [
      "data"
    ],
    "additionalProperties": false
  }
  ```
</details>

## Deepline cost

* Pricing model: `provider_usage` (provider usage).
* Estimated Deepline credits: `0.01` per pricing unit.

## Related documentation

* [Context.dev provider guide](https://deepline.com/docs/providers/contextdev/guide.md)
* [SDK V2 quickstart](https://deepline.com/docs/sdk-v2/quickstart.md)
* [SDK reference](https://deepline.com/docs/sdk-v2/sdk-reference.md)
* [Run tools across a CSV](https://deepline.com/docs/sdk-v2/batch-csv.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.