Title98/100
Scrape a URL
The title clearly communicates the tool’s action and subject. Keep it concise.
Description93/100
Scrape one known URL and return any combination of HTML, Markdown, a screenshot, page images, original bytes, CSS-selected fields, relevant highlights, schema-shaped JSON, or product data. Supports browser actions, custom target headers, PDF parsing with optional page markers, deadlines, and zero data retention. Browser clicks can change the target site's state. For focused research, responseMode="compact" with formats.highlights and highlightsParams.query returns relevant excerpts; responseMode="full" returns complete content or metadata.
Explain mutations, irreversible effects, or prerequisites that matter before calling this tool.
Inputs86/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
url
URL of the public page to scrape.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
formats › html
Rendered HTML.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
formats › markdown
Page content as Markdown.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
formats › screenshot
A screenshot of the page.
Clear enough to supply this argument.
formats › images
Images found on the page.
Clear enough to supply this argument.
formats › bytes
The original HTTP response body.
Clear enough to supply this argument.
formats › parse
Fields extracted with custom rules or a prebuilt parser, returned as `parsed`.
Clear enough to supply this argument.
formats › product
Product details such as name, price, and availability.
Clear enough to supply this argument.
formats › highlights
Markdown excerpts relevant to `highlightsParams.query`.
Clear enough to supply this argument.
formats › json
An object matching `jsonParams.schema`, extracted from the page text and its embedded data (JSON-LD, meta tags, framework state).
Clear enough to supply this argument.
sharedParams › profile › type
`existing`: Reuse a saved browser profile. `new`: Sign in and create a browser profile.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
sharedParams › profile › profileId
The ID returned in profile.id by an earlier scrape.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
sharedParams › profile › identifier
Username or email for the target website.
Clear enough to supply this argument.
sharedParams › profile › password
Password used to sign in. It is never stored in the profile.
Clear enough to supply this argument.
sharedParams › profile › description
Optional label shown when listing profiles with `GET /org/browser/profiles`.
Clear enough to supply this argument.
sharedParams › country
Country of the proxy that fetches the page, as a country code such as `US`.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
sharedParams › headers
HTTP headers to send to the target site. Requests with headers skip the cache.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
sharedParams › viewport › width
Browser viewport width in pixels.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
sharedParams › viewport › height
Browser viewport height in pixels.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
sharedParams › theme
Emulate a light or dark color scheme.
Clear enough to supply this argument.
sharedParams › dismissCookies
Accept cookie banners before actions and capture.
Clear enough to supply this argument.
sharedParams › dismissPopups
Close other popups before actions and capture.
Clear enough to supply this argument.
sharedParams › actions › items › type
Use `perform` for a plain-language browser instruction. Use `scroll` to move through the page or a container. Use `wait` to pause for a fixed duration. Use `waitFor` to wait for a matching element.
Clear enough to supply this argument.
sharedParams › actions › items › action
One browser instruction, such as clicking a button or entering text.
Clear enough to supply this argument.
sharedParams › actions › items › direction
Direction to scroll.
Clear enough to supply this argument.
sharedParams › actions › items › amount
Distance per scroll: pixels, one `viewport`, or `max` to reach the end.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
sharedParams › actions › items › selector
`scroll`: Scroll this container. Omit to scroll the page. `waitFor`: CSS selector to wait for before continuing.
Clear enough to supply this argument.
sharedParams › actions › items › maxScrolls
Maximum number of scroll steps for this action.
Clear enough to supply this argument.
sharedParams › actions › items › milliseconds
Time to pause in milliseconds before the next action.
Clear enough to supply this argument.
sharedParams › waitFor
Milliseconds, or a CSS selector to wait for, after actions. Defaults to 500 (2000 with frames or XML).
Clear enough to supply this argument.
sharedParams › settleAnimations
Wait for CSS animations to finish before capture. Defaults to `true` when `screenshot` is requested.
Clear enough to supply this argument.
sharedParams › mainContentOnly
Keep only the main content. Doesn't affect `screenshot`, `bytes`, or `product`.
Clear enough to supply this argument.
sharedParams › includeSelectors
Keep only elements matching these CSS selectors.
Clear enough to supply this argument.
sharedParams › excludeSelectors
Remove elements matching these CSS selectors. Overrides `includeSelectors`.
Clear enough to supply this argument.
sharedParams › includeFrames
Include iframe content in HTML and text outputs. Screenshots always show visible frames.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
sharedParams › parsers › pdf › startPage
First page to parse, starting at 1.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
sharedParams › parsers › pdf › endPage
Last page to parse. Must be at least `startPage`.
Clear enough to supply this argument.
sharedParams › parsers › pdf › ocr
Set `auto` to read scanned pages with OCR.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
sharedParams › parsers › pdf › includeNumberedPages
Start each page in the Markdown with a `<!-- page N -->` line using its original 1-based page number; these responses are never served from cache.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
markdownParams › includeLinks
Keep link URLs in the Markdown (`html-conversion` only).
Clear enough to supply this argument.
markdownParams › includeImages
Include images in the Markdown (`html-conversion` only).
Clear enough to supply this argument.
markdownParams › inlineImages
How base64 images appear when `includeImages` is set (`html-conversion` only).
Clear enough to supply this argument.
markdownParams › sourcePreference
Markdown sources in order of preference: `html-conversion` converts the page HTML, `markdown-direct` uses Markdown the site publishes.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
screenshotParams › area › anyOf › 1 › selector
CSS selector matching exactly one visible element.
Clear enough to supply this argument.
screenshotParams › area › anyOf › 2 › x
Left edge of the capture, in pixels from the document origin.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
screenshotParams › area › anyOf › 2 › y
Top edge of the capture, in pixels from the document origin.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
screenshotParams › area › anyOf › 2 › width
Width of the capture in pixels.
Clear enough to supply this argument.
screenshotParams › area › anyOf › 2 › height
Height of the capture in pixels.
Clear enough to supply this argument.
screenshotParams › format
Image format for the screenshot.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
imageParams › enrich
Extra data per image: `dimensions`, `classification`, or a hosted `file` URL.
Clear enough to supply this argument.
imageParams › dedupe
Set `visual` to drop visual duplicates, keeping the largest copy.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
parseParams › type
`custom`: Extract fields using custom CSS rules. This is the default when type is omitted. `prebuilt`: Use a prebuilt parser instead of custom rules.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
parseParams › rules › additionalProperties › anyOf › 1 › selector
CSS selector to match within the current page or parent rule.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
parseParams › rules › additionalProperties › anyOf › 1 › type
Return the first match with `item` or all matches with `list`.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
parseParams › rules › additionalProperties › anyOf › 1 › output
Return text, HTML, an attribute such as `@href`, or nested field rules. Defaults to text.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
parseParams › parser
google-maps parses Google Maps business data into data.results. Accepts Maps place, search, and internal data URLs. Uses a US exit and English labels regardless of hl or Accept-Language. google-maps-reviews returns the reviews of a place in data.reviews, in the same shape as the Serper reviews API (rating, date, isoDate, snippet, translatedSnippet, likes, user, media, response, link, id), plus language, guided ratings in details, and user.isLocalGuide; data also carries the place featureId, cid, and sort. sort and limit pick the order and count, and oldest is exact. It accepts Maps place, search, and ?cid= URLs, plus search.google.com/local/reviews URLs, so the google_maps_url and google_reviews_url fields of google-maps results work as input. An unknown place returns no reviews. google-play parses a Play Store app into data: details, developer contact, ratings, price, permissions, and data safety. google-play-reviews returns the 200 newest reviews of the app, with developer replies, in data.reviews. Both Play parsers accept app details URLs (play.google.com/store/apps/details?id=…); hl and gl set the language and storefront, defaulting to en and us. app-store parses an App Store app into data: details, developer, ratings, price, version, and screenshots. app-store-reviews returns up to the 500 newest reviews in data.reviews. Both App Store parsers accept app URLs (apps.apple.com/us/app/…/id…); the country in the path sets the storefront, defaulting to us. g2-reviews returns the 25 most recently published reviews of a G2 product in data.reviews (rating, title, likes, dislikes, problems_solved, reviewer role, company size, and industry), plus data.product. It accepts G2 product URLs (g2.com/products/…), follows renamed products, and keeps star-rating filters from the URL (filters[nps_score][]=1 to 5); other filters, sort orders, and pages are ignored. instagram-profile parses a public profile (instagram.com/{username}) into data: bio, links, follower and post counts, category, business address, similar_accounts, and latest_posts (up to the 12 posts at the top of the profile, newest first). Instagram lists pinned posts there ahead of newer ones, so posts with is_pinned true can be older; when Instagram shows only a rounded post count (32K), post_count is that rounded number and is_post_count_rounded is true. instagram-post parses a post or reel (/p/…, /reel/…) into data: caption, hashtags, mentions, like, comment, and view counts (like_count and view_count are null when the owner hides them), media URLs, tagged users, collaborators, location, and the top ~14 comments in data.comments. instagram-feed returns the top posts for a hashtag or keyword (/explore/tags/…, /popular/…) or the recent posts at a location (/explore/locations/{id}/…) in data.posts; keyword posts carry only the shortcode, owner, thumbnail, and views, plus the caption when Instagram shows it. All three Instagram parsers read public data without logging in, so private accounts return no posts and follower lists are unavailable. tiktok-profile parses a public profile (tiktok.com/@{username}) into data: nickname, bio, bio link, follower, following, like, and video counts, verified, private, and business flags, and business category; it does not list videos. tiktok-video parses a video or photo post (/@{username}/video/{id} or /@{username}/photo/{id}) into data: caption, hashtags, mentions, author, view, like, comment, share, save, and repost counts, duration, thumbnail, a video_url that downloads without cookies, image_urls for photo posts, music, location, and ad, paid-partnership, and AI-generated flags. tiktok-feed returns videos in the tiktok-video shape as data.videos: the latest 15 from a profile URL, the top 30 from a hashtag URL (/tag/{name}), or the top 12 from a search URL (/search?q={query}). tiktok-comments returns the first 20 comments of a video or photo post as data.comments: text, posted_at, like and reply counts, whether the author liked it, and the commenter. tiktok-followers and tiktok-following return up to 30 accounts of a profile as data.users, in the tiktok-profile shape. tiktok-user-search returns the top 10 accounts for a user search URL (/search/user?q={query}) as data.users: id, username, nickname, biography, avatar_url, sec_uid, follower_count, like_count, and is_verified. The TikTok parsers accept tiktok.com, www.tiktok.com, and m.tiktok.com URLs but not short links (vm.tiktok.com, vt.tiktok.com, tiktok.com/t/…). reddit-post parses a post (reddit.com/r/{subreddit}/comments/{id}, reddit.com/comments/{id}, or redd.it/{id}) into data.post: title, body as Markdown, type (text, link, image, gallery, or video), link_url, subreddit, author, flairs, score, upvote_ratio, comment and crosspost counts, NSFW, spoiler, locked, stickied, and archived flags, images (every gallery image in order), and video (an MP4 url plus an hls_url that carries the audio). data.comments holds the comment tree, each comment with id, author, body as Markdown, score, posted_at, depth, parent_id, url, is_submitter, is_deleted, and its replies; limit caps the total number of comments (default 100), filled shallowest first so whole conversations are kept, and data.has_more_comments says whether the thread has more. The sort query of the URL (best, top, new, controversial, old, qa) orders the comments. reddit-search returns search results for a search URL (reddit.com/search?q={query}, or reddit.com/r/{subreddit}/search?q={query} to search one subreddit). With type=link or no type it returns posts in the reddit-post shape as data.posts, ordered by the sort (relevance, hot, top, new, comments) and limited to the t time range (hour, day, week, month, year, all) of the URL; type=sr returns communities as data.communities (name, title, description, sidebar, subscriber_count, created_at, type, NSFW and quarantine flags, language, category, icon and banner URLs, and allowed post types); type=user returns accounts as data.users (username, display_name, bio, created_at, post and comment karma, avatar and banner URLs, and verified, employee, moderator, premium, and NSFW flags). limit caps the number of results (default 100), in the order Reddit returns them, and data.has_more says whether Reddit has more. reddit-subreddit reads a subreddit URL (reddit.com/r/{subreddit}, optionally followed by /hot, /new, /top, /rising, or /controversial, with t setting the time range of top and controversial, default day) into data.subreddit in the community shape of reddit-search, data.rules (name, description, applies_to, violation_reason, created_at), and data.posts in the reddit-post shape, ordered like the tab (default hot) and with stickied posts flagged; r/all and r/popular return posts with a null subreddit and rules. limit caps the posts (default 100) and data.has_more says whether Reddit has more. Private and quarantined subreddits return WEBSITE_ACCESS_ERROR. reddit-user reads a profile URL (reddit.com/user/{username} or reddit.com/u/{username}, optionally followed by /overview, /submitted, or /comments, with sort set to new, hot, top, or controversial and t setting the time range of top and controversial, default all) into data.user (id, username, display_name, bio, created_at, total, post, comment, awardee, and awarder karma, avatar and banner URLs, and verified, suspended, employee, moderator, premium, and NSFW flags), data.trophies (name, description, icon_url, granted_at, url), data.moderated_communities (name, title, url, subscriber_count, icon_url, is_nsfw), data.posts in the reddit-post shape, and data.comments, each with id, author, body as Markdown, score, posted_at, edited_at, url, subreddit, parent_id (null for a top-level comment), is_submitter, is_stickied, distinguished, award_count, and the post it was left on (id, title, url, author, is_nsfw). The overview tab returns both posts and comments; submitted returns null comments and comments returns null posts. limit caps the posts and comments together (default 100) and data.has_more says whether Reddit has more. Users who hide their activity return empty lists, and suspended accounts return their profile with null posts and comments. yelp-search accepts Yelp search URLs with find_desc and find_loc, reads start as the result offset, and returns up to 20 ranked organic businesses in data.businesses with total and pagination. yelp-reviews accepts a Yelp business URL (yelp.com/biz/{alias}), uses optional start for the offset, and always sorts newest first; unsupported sort and review filters are rejected, while tracking params are ignored. It returns up to 20 latest public reviews in data.reviews with business details and pagination.next_offset. Each review has rating, full text, updated_at, and author (id is the Yelp user id from the reviewer profile URL, url links to that profile, plus name, location, and review_count); owner replies and photos are not included. tripadvisor-reviews accepts a Tripadvisor hotel, restaurant, or attraction review URL (tripadvisor.com/Hotel_Review-g{geo}-d{id}-Reviews-….html, on any Tripadvisor country domain), reads -or{N}- in the path as the offset, and returns 20 reviews in data.reviews in the order Tripadvisor shows them, with data.location (id, name, type, url, review_count) and pagination.next_offset. Each review has id, url, title, full text, rating, language, published_at, visit_month, helpful_votes, subratings, photo_urls, owner_response (text, published_at, author_name), and author (id, username, name, url, contribution_count); an unknown location returns no reviews. emails accepts any page and returns its email addresses as data.emails ([{ email }]), read from mailto links, Cloudflare-protected addresses, and visible text. phone-numbers accepts any page and returns its valid phone numbers in E.164 as data.phone_numbers ([{ phone }]), read from tel links and visible text; numbers without a country code are read for the country of the site TLD, defaulting to US. links accepts any page and returns its unique http(s) links as data.links ([{ url, text }]), with absolute URLs; text falls back to aria-label or image alt and is null when a link has none. The emails parser reads the rendered page and respects content filters; the other prebuilt parsers read their data independently of DOM filters.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
parseParams › sort
google-maps-reviews only. Order of data.reviews. newest, relevant, highest, and lowest follow Google; oldest returns the earliest reviews first, which Google itself does not offer.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
parseParams › limit
google-maps-reviews and reddit parsers only. Maximum reviews, comments, or results to return.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
productParams › dedupeImages
Drop visually duplicate product images, keeping the largest copy.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
productParams › useAIFallback
Ignored. The AI fallback runs automatically.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
highlightsParams › query
The question or topic to find passages for.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
highlightsParams › maxCharacters
Maximum combined length of returned passages.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
jsonParams › schema
JSON Schema (not an example object) for a top-level object, up to 50 KB. Use optional or nullable fields for missing facts.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
jsonParams › instructions
Extra guidance, such as which facts to prefer or how to read a field.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
maxAgeMs
Maximum age of a cached output, in milliseconds. `0` fetches fresh.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
zdr
`enabled` turns on zero data retention. Your organization must have ZDR enabled.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
timeoutOpts › milliseconds
Deadline in milliseconds.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
timeoutOpts › behavior
"fail" returns 408 at the deadline. "return-partial" returns available results; inspect the response’s partial flag. "return-partial" requires at least 5000 ms.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
tags
Labels for filtering usage in the dashboard.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
policies
Access policy IDs to apply. A URL must pass every policy.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
responseMode
The responseMode="compact" setting returns one JSON text response without unused formats or verbose page metadata, with HTML, Markdown, and highlights clipped to 4,000 characters per format. Clipping is marked; JSON, parsed data, product data, and images are kept. The responseMode="full" setting returns the complete response, up to the server response limit. For query-relevant excerpts, request formats.highlights with highlightsParams.query instead of reading clipped page text.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
Annotations100/100
All four behavior hints are declared.
{
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": true
}Output schema0/100
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared