{"openapi":"3.1.0","info":{"title":"Reserp Google Search API","version":"3.0.0","description":"Google SERP API. Send a Google Search URL and receive a flat URL-and-text index or the results page as typed blocks in page order. Search options stay in the URL: images, shopping, countries, languages, date filters and more. Google Search parameters pass through unchanged except num, which is unsupported."},"externalDocs":{"description":"API documentation","url":"https://reserp.ai/docs"},"servers":[{"url":"https://api.reserp.ai","description":"Production"}],"paths":{"/v2/serp/search":{"post":{"operationId":"search","summary":"Search — recommended for applications and agents","description":"Returns external result links from every part of the fetched Google results page: organic results, ads, carousels, sitelinks and other SERP features, in one flat list with accompanying text. Coverage applies to links available on the fetched page. Recommended for scraping pipelines, research and AI ingestion. Duplicate URLs are combined. Occasional navigation or help links may also appear.","security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchRequest"},"example":{"url":"https://www.google.com/search?q=best+noise+cancelling+headphones&gl=us&hl=en"}}}},"responses":{"200":{"description":"Search completed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchResponse"},"example":{"ok":true,"request":{"url":"https://www.google.com/search?q=best+noise+cancelling+headphones&hl=en&gl=us"},"page":{"url":"https://www.google.com/search?q=best+noise+cancelling+headphones&hl=en&gl=us&sei=-vKZaoLmOK6gkPIPs46R6AY"},"results":[{"url":"https://recordingnow.com/blog/best-noise-cancelling-headphones","text":"RecordingNOW.com\nhttps://recordingnow.com\nBest Noise Cancelling Headphones 2026 (50+ Tested!)\nTrue to its name, the\nBose QuietComfort Ultra 2nd Gen\nis the most comfortable pair of over-ear, noise cancelling headphones we've tested to date."},{"url":"https://www.nytimes.com/wirecutter/reviews/best-noise-cancelling-headphones","text":"The New York Times\nhttps://www.nytimes.com\nThe 4 Best Noise-Cancelling Headphones of 2026 | Reviews by Wirecutter\nJul 20, 2026\n—\nSoundcore Space One\n. This pair of over-ear headphones cancels noise impressively, sounds great, is comfortable to wear, and has a long battery ..."},{"url":"https://www.reddit.com/r/digitalnomad/comments/1pt8k3a/what_are_the_best_noisecancelling_headphones_or","text":"Reddit · r/digitalnomad\n90+ comments · 8 months ago\nWhat are the best noise-cancelling headphones or brands widely ...\nThis question is currently being asked quite alot so I'm going to share my experience on this. There are several companies that make effective sound cancelling ...\nView all posts"},{"url":"https://www.reddit.com/r/digitalnomad/comments/1pt8k3a/what_are_the_best_noisecancelling_headphones_or/o4fk2ui","text":"been through so many pairs but this one I settled on has incredible comfort and the noise canceling ...\nMore\nTop answer\n· 18 votes"},{"url":"https://www.reddit.com/r/digitalnomad/comments/1pt8k3a/what_are_the_best_noisecancelling_headphones_or/nwc6b2j","text":"I am using these headphones and I absolutely love them. Noise cancelling is really good, ...\nMore\n11 votes"},{"url":"https://www.reddit.com/r/productivity/comments/1c8x5vy/what_are_the_best_noisecancelling_headphones","text":"What are the best noise-cancelling headphones?\nr/productivity\n·\n110+ comments\n2y"},{"url":"https://www.reddit.com/r/SonyHeadphones/comments/1ssq1ne/the_best_noisecancelling_headphones_that_are","text":"Best Noise-cancelling Headphones Worth Buying Today\nr/SonyHeadphones\n·\n20+ comments\n4mo\nMore results from Reddit\nDiscussions and forums\nThe best noise-cancelling headphones that are actually worth buying?"},{"url":"https://www.rtings.com/headphones/reviews/best/by-feature/noise-cancelling","text":"RTINGS.com\nhttps://www.rtings.com\nThe 5 Best Noise Cancelling Headphones of 2026\nAug 26, 2026\n—\nThe Sony WH-1000XM6 are the best noise cancelling headphones we've tested. These premium over-ears have remarkable noise isolation."}],"pagination":{"next_url":"https://www.google.com/search?q=best+noise+cancelling+headphones&hl=en&gl=us&start=10"},"billed":true,"billing_source":"prepaid"}}}},"400":{"description":"The request is invalid. Not billed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"The bearer API key is missing or wrong. Not billed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"402":{"description":"The monthly Free allowance is exhausted and no balance is available. Not billed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"The account or request is not permitted.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limited. Wait for Retry-After seconds. Not billed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Unexpected service error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"The search could not be completed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"The service is temporarily unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v2/serp/structured":{"post":{"operationId":"structuredSearch","summary":"Structured extraction — best effort","description":"Returns the results page as typed blocks with items and links. Use Search for general applications and agents. Structured extraction depends on Google's changing page layouts, so fields and classifications may be missing or inaccurate. Use it when you specifically need SERP features and can tolerate these limitations. Unrecognized modules are returned as type other with their text and links.","security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchRequest"},"example":{"url":"https://www.google.com/search?q=how+to+fix+a+leaking+tap&gl=us&hl=en"}}}},"responses":{"200":{"description":"Search completed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StructuredResponse"},"example":{"ok":true,"request":{"url":"https://www.google.com/search?q=how+to+fix+a+leaking+tap&hl=en&gl=us"},"page":{"url":"https://www.google.com/search?q=how+to+fix+a+leaking+tap&hl=en&gl=us&sei=_WyfatKPOozBkPIPwYrCmAY","query":"how to fix a leaking tap","title":"how to fix a leaking tap - Google Search","surface":"web","state":"results","overlays":[],"spelling":null},"blocks":[{"type":"navigation","position":2,"title":null,"url":"https://www.google.com/search?q=how+to+fix+a+leaking+tap&sca_esv=61082733fc3fb183&hl=en&gl=us&udm=50&fbs=ABfTbFVQT6KYne3_7HzvYh-3OtGxmA6qToXQOWeUvgXQ5M6Rvtme8by44bKODdrCzbFzI7A_fx1v0CeRSfiKOhPfjt_SCfKAsbBZQZr5vNT3h9ib3N3pbTt_lJR-Uwtki-JlE1FKp-UEWTNtykUBFs9S17gRIj_deZ3EYm2GrC9eOBhAfAJdHaKgQWBLTplRmbImpILMJcfHErwXCtwr4Ik-ciomUrybk0jcRZlbFMahqDWydZoVvgc&vsint=&aep=1&ntc=1&cs=1&sa=X&ved=2ahUKEwjE5_mm8t2WAxWYIUQIHaUaL2YQ2J8OegQIEhAE","domain":"www.google.com","text":"AI Mode All Short videos Videos Images Forums Shopping","links":[{"url":"https://www.google.com/search?q=how+to+fix+a+leaking+tap&sca_esv=61082733fc3fb183&hl=en&gl=us&udm=50&fbs=ABfTbFVQT6KYne3_7HzvYh-3OtGxmA6qToXQOWeUvgXQ5M6Rvtme8by44bKODdrCzbFzI7A_fx1v0CeRSfiKOhPfjt_SCfKAsbBZQZr5vNT3h9ib3N3pbTt_lJR-Uwtki-JlE1FKp-UEWTNtykUBFs9S17gRIj_deZ3EYm2GrC9eOBhAfAJdHaKgQWBLTplRmbImpILMJcfHErwXCtwr4Ik-ciomUrybk0jcRZlbFMahqDWydZoVvgc&vsint=&aep=1&ntc=1&cs=1&sa=X&ved=2ahUKEwjE5_mm8t2WAxWYIUQIHaUaL2YQ2J8OegQIEhAE","text":"AI Mode"},{"url":"https://www.google.com/search?sca_esv=61082733fc3fb183&hl=en&gl=us&udm=39&fbs=ABfTbFVQT6KYne3_7HzvYh-3OtGxmA6qToXQOWeUvgXQ5M6Rvtme8by44bKODdrCzbFzI7A_fx1v0CeRSfiKOhPfjt_SCfKAsbBZQZr5vNT3h9ib3N3pbTt_lJR-Uwtki-JlE1FKp-UEWTNtykUBFs9S17gRIj_deZ3EYm2GrC9eOBhAfAJdHaKgQWBLTplRmbImpILMJcfHErwXCtwr4Ik-ciomUrybk0jcRZlbFMahqDWydZoVvgc&q=how+to+fix+a+leaking+tap&sa=X&ved=2ahUKEwjE5_mm8t2WAxWYIUQIHaUaL2YQs6gLegQIGBAB","text":"Short videos"},{"url":"https://www.google.com/search?sca_esv=61082733fc3fb183&hl=en&gl=us&udm=7&fbs=ABfTbFVQT6KYne3_7HzvYh-3OtGxmA6qToXQOWeUvgXQ5M6Rvtme8by44bKODdrCzbFzI7A_fx1v0CeRSfiKOhPfjt_SCfKAsbBZQZr5vNT3h9ib3N3pbTt_lJR-Uwtki-JlE1FKp-UEWTNtykUBFs9S17gRIj_deZ3EYm2GrC9eOBhAfAJdHaKgQWBLTplRmbImpILMJcfHErwXCtwr4Ik-ciomUrybk0jcRZlbFMahqDWydZoVvgc&q=how+to+fix+a+leaking+tap&sa=X&ved=2ahUKEwjE5_mm8t2WAxWYIUQIHaUaL2YQtKgLegQIFxAB","text":"Videos"}],"items":[{"position":2,"title":"AI Mode","url":"https://www.google.com/search?q=how+to+fix+a+leaking+tap&sca_esv=61082733fc3fb183&hl=en&gl=us&udm=50&fbs=ABfTbFVQT6KYne3_7HzvYh-3OtGxmA6qToXQOWeUvgXQ5M6Rvtme8by44bKODdrCzbFzI7A_fx1v0CeRSfiKOhPfjt_SCfKAsbBZQZr5vNT3h9ib3N3pbTt_lJR-Uwtki-JlE1FKp-UEWTNtykUBFs9S17gRIj_deZ3EYm2GrC9eOBhAfAJdHaKgQWBLTplRmbImpILMJcfHErwXCtwr4Ik-ciomUrybk0jcRZlbFMahqDWydZoVvgc&vsint=&aep=1&ntc=1&cs=1&sa=X&ved=2ahUKEwjE5_mm8t2WAxWYIUQIHaUaL2YQ2J8OegQIEhAE","domain":"www.google.com"},{"position":3,"title":"Short videos","url":"https://www.google.com/search?sca_esv=61082733fc3fb183&hl=en&gl=us&udm=39&fbs=ABfTbFVQT6KYne3_7HzvYh-3OtGxmA6qToXQOWeUvgXQ5M6Rvtme8by44bKODdrCzbFzI7A_fx1v0CeRSfiKOhPfjt_SCfKAsbBZQZr5vNT3h9ib3N3pbTt_lJR-Uwtki-JlE1FKp-UEWTNtykUBFs9S17gRIj_deZ3EYm2GrC9eOBhAfAJdHaKgQWBLTplRmbImpILMJcfHErwXCtwr4Ik-ciomUrybk0jcRZlbFMahqDWydZoVvgc&q=how+to+fix+a+leaking+tap&sa=X&ved=2ahUKEwjE5_mm8t2WAxWYIUQIHaUaL2YQs6gLegQIGBAB","domain":"www.google.com"}],"facts":[]},{"type":"ai_overview","position":3,"title":"AI Overview","url":"https://www.wikihow.com/Fix-a-Leaky-Faucet","domain":"www.wikihow.com","text":"To fix a dripping tap, you need to turn off the water supply, access the internal valve or washer, and replace the worn part . You can read a detailed guide on…","links":[{"url":"https://www.wikihow.com/Fix-a-Leaky-Faucet","text":"wikiHow"}],"items":[{"position":1,"title":"wikiHow","url":"https://www.wikihow.com/Fix-a-Leaky-Faucet","domain":"www.wikihow.com"}],"facts":[],"display":"collapsed","sections":[{"kind":"paragraph","text":"To fix a dripping tap, you need to turn off the water supply, access the internal valve or washer, and replace the worn part ."},{"kind":"paragraph","text":"You can read a detailed guide on fixing leaky faucets at wikiHow ."}]},{"type":"videos","position":4,"title":"Videos","url":"https://www.youtube.com/watch?v=0MyvS5lacgE","domain":"www.youtube.com","text":"Videos How to fix a dripping tap YouTube B&Q May 6, 2012 4 key moments in this video How to fix a leaking tap YouTube Tanya Visser - The Gardener Oct 10, 2024 C…","links":[{"url":"https://www.youtube.com/watch?v=0MyvS5lacgE","text":"How to fix a dripping tap YouTube B&Q May 6, 2012"},{"url":"https://www.youtube.com/watch?v=0MyvS5lacgE&t=15","text":"Check if there is an isolation ball valve on the pipe under the sink. 1 of 4, 15 seconds."},{"url":"https://www.youtube.com/watch?v=0MyvS5lacgE&t=42","text":"How to remove the tap head. 2 of 4, 42 seconds."}],"items":[{"position":1,"title":"How to fix a dripping tap","url":"https://www.youtube.com/watch?v=0MyvS5lacgE","domain":"www.youtube.com","platform":"YouTube","channel":"B&Q","date":"May 6, 2012","duration":"2:06","snippet":null},{"position":2,"title":"How to fix a leaking tap","url":"https://www.youtube.com/watch?v=C5v_2hWCkIU","domain":"www.youtube.com","platform":"YouTube","channel":"Tanya Visser - The Gardener","date":"Oct 10, 2024","duration":"3:30","snippet":null}],"facts":[]},{"type":"people_also_ask","position":5,"title":"People also ask","url":null,"domain":null,"text":"People also ask How can I fix a leaking tap at home? What is the most common cause of a dripping faucet? Is it worth fixing a dripping tap? How to fix a leaking…","links":[],"items":[{"position":1,"title":"How can I fix a leaking tap at home?","url":null,"domain":null,"snippet":null,"source":null},{"position":2,"title":"What is the most common cause of a dripping faucet?","url":null,"domain":null,"snippet":null,"source":null},{"position":3,"title":"Is it worth fixing a dripping tap?","url":null,"domain":null,"snippet":null,"source":null},{"position":4,"title":"How to fix a leaking faucet tap?","url":null,"domain":null,"snippet":null,"source":null}],"facts":[]},{"type":"organic","position":8,"title":"How to fix a dripping tap?","url":"https://www.workshop.bunnings.com.au/discussion/183392/how-to-fix-a-dripping-tap","domain":"www.workshop.bunnings.com.au","text":"Bunnings Workshop community https://www.workshop.bunnings.com.au How to fix a dripping tap? Dec 4, 2023 — If your tap is still leaking, I suggest trying to repa…","links":[{"url":"https://www.workshop.bunnings.com.au/discussion/183392/how-to-fix-a-dripping-tap","text":"Bunnings Workshop community https://www.workshop.bunnings.com.au How to fix a dripping tap?"}],"items":[{"position":1,"title":"How to fix a dripping tap?","url":"https://www.workshop.bunnings.com.au/discussion/183392/how-to-fix-a-dripping-tap","domain":"www.workshop.bunnings.com.au","displayed_url":"https://www.workshop.bunnings.com.au","source":"Bunnings Workshop community","date":"Dec 4, 2023","snippet":"If your tap is still leaking, I suggest trying to repair it one more time. I recommend using Enduraseal 12mm Copper Tap Valves - Pack of 2. ...","highlights":["Enduraseal 12mm Copper Tap Valves"],"rating":null,"review_count":null,"extensions":[],"sitelinks":[]}],"facts":[]},{"type":"organic","position":10,"title":"Leaking tap, from UK. How to fix and what parts do i need replacing? : r/fixit","url":"https://www.reddit.com/r/fixit/comments/a2vjsw/leaking_tap_from_uk_how_to_fix_and_what_parts_do/","domain":"www.reddit.com","text":"Reddit · r/fixit 4 comments · 7 years ago Leaking tap, from UK. How to fix and what parts do i need replacing? : r/fixit Turn off the water supply to the faucet…","links":[{"url":"https://www.reddit.com/r/fixit/comments/a2vjsw/leaking_tap_from_uk_how_to_fix_and_what_parts_do/","text":"Reddit · r/fixit 4 comments · 7 years ago Leaking tap, from UK. How to fix and what parts do i need replacing? : r/fixit"},{"url":"https://www.reddit.com/r/fixit/comments/a2vjsw/comment/eb1w991/","text":"Turn off the water supply to the faucet (should be under the sink) and take it apart. ... More Top answer · 3 votes"},{"url":"https://www.reddit.com/r/fixit/comments/a2vjsw/comment/eb1gnd1/","text":"I watched a few YouTube videos and they were suggesting to replace the ceramic cartridge. ... More 2 votes"}],"items":[{"position":3,"title":"Leaking tap, from UK. How to fix and what parts do i need replacing? : r/fixit","url":"https://www.reddit.com/r/fixit/comments/a2vjsw/leaking_tap_from_uk_how_to_fix_and_what_parts_do/","domain":"www.reddit.com","displayed_url":null,"source":"Reddit · r/fixit","date":"7 years ago","snippet":"Turn off the water supply to the faucet (should be under the sink) and take it apart. You will either need a hex wrench (aka Allen wrench) or a ...","highlights":[],"rating":null,"review_count":null,"extensions":["View all posts"],"sitelinks":[{"title":"Turn off the water supply to the faucet (should be under the sink) and take it apart. ... More Top answer · 3 votes","url":"https://www.reddit.com/r/fixit/comments/a2vjsw/comment/eb1w991/"},{"title":"I watched a few YouTube videos and they were suggesting to replace the ceramic cartridge. ... More 2 votes","url":"https://www.reddit.com/r/fixit/comments/a2vjsw/comment/eb1gnd1/"}]}],"facts":[]},{"type":"discussions","position":13,"title":"What people are saying","url":"https://www.youtube.com/watch?v=QX3spLvy79k","domain":"www.youtube.com","text":"What people are saying Trending posts and discussions Bath Taps Constantly Dripping FIXED! 34.4K+ views · 6 days ago mmplumber · YouTube Maintenance plumber & c…","links":[{"url":"https://www.youtube.com/watch?v=QX3spLvy79k","text":"Bath Taps Constantly Dripping FIXED! 34.4K+ views · 6 days ago mmplumber · YouTube Maintenance plumber & content creator"},{"url":"https://www.facebook.com/HowToHomeDIY/posts/easy-ways-to-stop-a-faucet-leak-in-10-minutes/1505847758014265/","text":"0:55 Easy ways to stop a faucet leak in 10 minutes 20+ reactions · 1 week ago HowToHomeDIY · Facebook DIY content creator"}],"items":[{"position":1,"title":"Bath Taps Constantly Dripping FIXED!","url":"https://www.youtube.com/watch?v=QX3spLvy79k","domain":"www.youtube.com","source":"mmplumber · YouTube Maintenance plumber & content creator","platform":"YouTube","date":"6 days ago","snippet":null,"extensions":["34.4K+ views"]},{"position":2,"title":"Easy ways to stop a faucet leak in 10 minutes","url":"https://www.facebook.com/HowToHomeDIY/posts/easy-ways-to-stop-a-faucet-leak-in-10-minutes/1505847758014265/","domain":"www.facebook.com","source":"HowToHomeDIY · Facebook DIY content creator","platform":"Facebook","date":"1 week ago","snippet":null,"extensions":["20+ reactions"]}],"facts":[]},{"type":"related_searches","position":15,"title":"People also search for","url":"https://www.google.com/search?sca_esv=61082733fc3fb183&hl=en&gl=us&q=How+to+fix+a+leaking+tap+washer&sa=X&ved=2ahUKEwjE5_mm8t2WAxWYIUQIHaUaL2YQ1QJ6BAggEAE","domain":"www.google.com","text":"People also search for How to fix a leaking tap washer How to fix a leaking tap from the spout How to fix a dripping tap on mixer tap How to fix dripping tap fr…","links":[{"url":"https://www.google.com/search?sca_esv=61082733fc3fb183&hl=en&gl=us&q=How+to+fix+a+leaking+tap+washer&sa=X&ved=2ahUKEwjE5_mm8t2WAxWYIUQIHaUaL2YQ1QJ6BAggEAE","text":"How to fix a leaking tap washer"},{"url":"https://www.google.com/search?sca_esv=61082733fc3fb183&hl=en&gl=us&q=How+to+fix+a+leaking+tap+from+the+spout&sa=X&ved=2ahUKEwjE5_mm8t2WAxWYIUQIHaUaL2YQ1QJ6BAgkEAE","text":"How to fix a leaking tap from the spout"},{"url":"https://www.google.com/search?sca_esv=61082733fc3fb183&hl=en&gl=us&q=How+to+fix+a+dripping+tap+on+mixer+tap&sa=X&ved=2ahUKEwjE5_mm8t2WAxWYIUQIHaUaL2YQ1QJ6BAgiEAE","text":"How to fix a dripping tap on mixer tap"}],"items":[{"position":7,"title":"How to fix a leaking tap washer","url":"https://www.google.com/search?sca_esv=61082733fc3fb183&hl=en&gl=us&q=How+to+fix+a+leaking+tap+washer&sa=X&ved=2ahUKEwjE5_mm8t2WAxWYIUQIHaUaL2YQ1QJ6BAggEAE","domain":"www.google.com"},{"position":8,"title":"How to fix a leaking tap from the spout","url":"https://www.google.com/search?sca_esv=61082733fc3fb183&hl=en&gl=us&q=How+to+fix+a+leaking+tap+from+the+spout&sa=X&ved=2ahUKEwjE5_mm8t2WAxWYIUQIHaUaL2YQ1QJ6BAgkEAE","domain":"www.google.com"},{"position":9,"title":"How to fix a dripping tap on mixer tap","url":"https://www.google.com/search?sca_esv=61082733fc3fb183&hl=en&gl=us&q=How+to+fix+a+dripping+tap+on+mixer+tap&sa=X&ved=2ahUKEwjE5_mm8t2WAxWYIUQIHaUaL2YQ1QJ6BAgiEAE","domain":"www.google.com"}],"facts":[]},{"type":"navigation","position":16,"title":"Page Navigation","url":"https://www.google.com/search?q=how+to+fix+a+leaking+tap&hl=en&gl=us&sei=_WyfatKPOozBkPIPwYrCmAY&aomd=1","domain":"www.google.com","text":"More search results","links":[{"url":"https://www.google.com/search?q=how+to+fix+a+leaking+tap&hl=en&gl=us&sei=_WyfatKPOozBkPIPwYrCmAY&aomd=1","text":"More search results"}],"items":[{"position":8,"title":"More search results","url":"https://www.google.com/search?q=how+to+fix+a+leaking+tap&hl=en&gl=us&sei=_WyfatKPOozBkPIPwYrCmAY&aomd=1","domain":"www.google.com"}],"facts":[]}],"pagination":{"next_url":"https://www.google.com/search?q=how+to+fix+a+leaking+tap&hl=en&gl=us&start=10"},"billed":true,"billing_source":"prepaid"}}}},"400":{"description":"The request is invalid. Not billed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"The bearer API key is missing or wrong. Not billed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"402":{"description":"The monthly Free allowance is exhausted and no balance is available. Not billed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"The account or request is not permitted.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limited. Wait for Retry-After seconds. Not billed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Unexpected service error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"The search could not be completed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"The service is temporarily unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}}},"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer"}},"schemas":{"Request":{"type":"object","additionalProperties":false,"required":["url"],"properties":{"url":{"type":"string","format":"uri","description":"The Google Search URL as submitted."}},"description":"The submitted Google Search URL. The final URL after redirects is page.url."},"Pagination":{"type":"object","additionalProperties":false,"required":["next_url"],"description":"Send next_url back as url to request the next page. Always present in successful responses, including empty ones; it does not indicate whether more results exist.","properties":{"next_url":{"type":"string","format":"uri"}}},"ResultEntry":{"type":"object","additionalProperties":false,"required":["url"],"properties":{"url":{"type":"string","format":"uri"},"text":{"type":"string","maxLength":4000}}},"BillingSource":{"enum":["free","prepaid",null]},"SearchRequest":{"type":"object","description":"Request body with one field, url. Google query parameters belong inside that URL, not in separate body fields.","additionalProperties":false,"required":["url"],"properties":{"url":{"type":"string","format":"uri","maxLength":10000,"description":"A complete https://www.google.com/search URL with a non-empty q parameter. Every Google parameter is passed through unchanged; num is rejected."}}},"SearchResponse":{"type":"object","additionalProperties":false,"required":["ok","request","page","results","pagination","billed","billing_source"],"properties":{"ok":{"const":true},"request":{"$ref":"#/components/schemas/Request"},"page":{"type":"object","additionalProperties":false,"required":["url"],"properties":{"url":{"type":"string","format":"uri"}},"description":"Contains the final URL after redirects."},"results":{"type":"array","items":{"$ref":"#/components/schemas/ResultEntry"},"description":"Flat list of result URLs and accompanying text across all result types, including organic results, ads, carousels and sitelinks. Duplicate URLs are combined."},"pagination":{"$ref":"#/components/schemas/Pagination"},"billed":{"type":"boolean"},"billing_source":{"$ref":"#/components/schemas/BillingSource"}}},"ErrorResponse":{"type":"object","description":"Read retryable and billed from the response; don’t infer their values from the HTTP status.","additionalProperties":false,"required":["ok","error","message","doc_url","retryable","billed","billing_source"],"properties":{"ok":{"const":false},"error":{"enum":["invalid_request","authentication_failed","free_allowance_exhausted","request_not_allowed","rate_limited","internal_error","search_failed","service_unavailable"]},"message":{"type":"string","description":"Explanation of the problem and how to address it. Wording may change; use error and retryable for application logic."},"doc_url":{"type":"string","format":"uri","description":"Link to the relevant documentation page."},"retryable":{"type":"boolean","description":"Whether the request can be retried."},"billed":{"type":"boolean","description":"Whether the request consumed account usage."},"billing_source":{"$ref":"#/components/schemas/BillingSource"}}},"Spelling":{"type":"object","additionalProperties":false,"required":["kind","query"],"properties":{"kind":{"enum":["did_you_mean","showing_results_for"]},"query":{"type":"string"}},"description":"Google's spelling notice: `did_you_mean` offers a correction, `showing_results_for` says Google already searched for the corrected query."},"Page":{"type":"object","additionalProperties":false,"required":["url","query","title","surface","state","overlays","spelling"],"properties":{"url":{"type":"string","format":"uri","description":"Final URL of the page Google served, after redirects."},"query":{"type":["string","null"],"description":"The query as submitted, taken from the `q` parameter of the request URL."},"title":{"type":["string","null"],"description":"Document title of the page."},"surface":{"enum":["web","images","shopping","news","videos","local","other"],"description":"Page type Google served, detected from the page itself: web, images, shopping, news, videos, local or other."},"state":{"enum":["results","no_results","unsupported"],"description":"`results` when a results page rendered, `no_results` when Google reported none, `unsupported` when no results container rendered, for example an interstitial. Blocks are returned in every state."},"overlays":{"type":"array","items":{"enum":["consent"]},"description":"Overlays drawn over a complete page. Only `consent` today."},"spelling":{"oneOf":[{"type":"null"},{"$ref":"#/components/schemas/Spelling"}],"description":"Google's spelling notice as `{kind, query}` with kind `did_you_mean` or `showing_results_for`; null when there is none."}}},"Link":{"type":"object","additionalProperties":false,"required":["url","text"],"properties":{"url":{"type":"string"},"text":{"type":["string","null"]}}},"Sitelink":{"type":"object","additionalProperties":false,"required":["title","url"],"properties":{"title":{"type":"string"},"url":{"type":"string"}}},"Fact":{"type":"object","additionalProperties":false,"required":["label","value","url"],"properties":{"label":{"type":"string"},"value":{"type":"string"},"url":{"type":["string","null"]}}},"Section":{"type":"object","additionalProperties":false,"required":["kind","text"],"properties":{"kind":{"enum":["heading","paragraph","list_item"]},"text":{"type":"string"}}},"StructuredPagination":{"type":"object","additionalProperties":false,"required":["next_url"],"properties":{"next_url":{"type":"string","description":"Google Search URL of the next page: Google's own link when the page carries one, otherwise the request URL advanced by ten. Send it back as `url`. It does not indicate whether more results exist."}}},"OrganicItem":{"type":"object","additionalProperties":false,"required":["position","title","url","domain","displayed_url","source","date","snippet","highlights","rating","review_count","extensions","sitelinks"],"properties":{"position":{"type":"integer","minimum":1,"description":"1-based rank among all items of the same block type on the page, so organic positions are the organic ranks even when the results are split across blocks."},"title":{"type":["string","null"],"description":"Title of the entry as shown."},"url":{"type":["string","null"],"description":"Destination URL, with Google redirect wrappers unwrapped. Null when the card links nowhere or Google exposes no destination."},"domain":{"type":["string","null"],"description":"Host of `url`."},"displayed_url":{"type":["string","null"],"description":"URL as displayed on the card."},"source":{"type":["string","null"],"description":"Site, publisher, channel, merchant or advertiser name as displayed."},"date":{"type":["string","null"],"description":"Date or age label as shown."},"snippet":{"type":["string","null"],"description":"Description text of the card."},"highlights":{"type":"array","items":{"type":"string"},"description":"Terms Google bolded in the snippet."},"rating":{"type":["number","null"],"minimum":0,"maximum":5,"description":"Star rating out of 5."},"review_count":{"type":["integer","null"],"minimum":0,"description":"Number of reviews. Compact suffixes such as 1.2K are expanded."},"extensions":{"type":"array","items":{"type":"string"},"description":"Short chips shown with the entry, as displayed: delivery notes, return policies, store ratings, comment counts."},"sitelinks":{"type":"array","items":{"$ref":"#/components/schemas/Sitelink"},"description":"Secondary links of the same result, as `{title, url}`."}}},"OrganicBlock":{"type":"object","additionalProperties":false,"required":["type","position","title","url","domain","text","links","items","facts"],"properties":{"type":{"const":"organic","description":"Block type, from the closed list below. Treat a type you do not know as `other`."},"position":{"type":"integer","minimum":1,"description":"1-based position of the block on the page."},"title":{"type":["string","null"],"description":"The block's own heading as shown; for organic, ads and featured snippets, the result title."},"url":{"type":["string","null"],"description":"Primary destination: the first item URL, otherwise the first link that is not Google Search chrome; null when the block links nowhere."},"domain":{"type":["string","null"],"description":"Host of `url`; for an unresolved Google redirect, the host shown on the page."},"text":{"type":"string","description":"Everything the block shows, in reading order, at most 4,000 characters. Empty string when the block shows no text, never null."},"links":{"type":"array","items":{"$ref":"#/components/schemas/Link"},"description":"Every link the block shows, in order, deduplicated by URL, as `{url, text}`. Google links included. Never null."},"items":{"type":"array","items":{"$ref":"#/components/schemas/OrganicItem"},"description":"The entries the block lists, typed by the block type. Never null."},"facts":{"type":"array","items":{"$ref":"#/components/schemas/Fact"},"description":"Labelled values the block shows, as `{label, value, url}` with the label in the page language. Never null."}},"description":"A web result: title, URL and snippet. One block per result, in page order; the block title is the result title."},"FeaturedSnippetItem":{"type":"object","additionalProperties":false,"required":["position","title","url","domain","displayed_url","source","date","snippet","highlights","rating","review_count","extensions","sitelinks"],"properties":{"position":{"type":"integer","minimum":1,"description":"1-based rank among all items of the same block type on the page, so organic positions are the organic ranks even when the results are split across blocks."},"title":{"type":["string","null"],"description":"Title of the entry as shown."},"url":{"type":["string","null"],"description":"Destination URL, with Google redirect wrappers unwrapped. Null when the card links nowhere or Google exposes no destination."},"domain":{"type":["string","null"],"description":"Host of `url`."},"displayed_url":{"type":["string","null"],"description":"URL as displayed on the card."},"source":{"type":["string","null"],"description":"Site, publisher, channel, merchant or advertiser name as displayed."},"date":{"type":["string","null"],"description":"Date or age label as shown."},"snippet":{"type":["string","null"],"description":"Description text of the card."},"highlights":{"type":"array","items":{"type":"string"},"description":"Terms Google bolded in the snippet."},"rating":{"type":["number","null"],"minimum":0,"maximum":5,"description":"Star rating out of 5."},"review_count":{"type":["integer","null"],"minimum":0,"description":"Number of reviews. Compact suffixes such as 1.2K are expanded."},"extensions":{"type":"array","items":{"type":"string"},"description":"Short chips shown with the entry, as displayed: delivery notes, return policies, store ratings, comment counts."},"sitelinks":{"type":"array","items":{"$ref":"#/components/schemas/Sitelink"},"description":"Secondary links of the same result, as `{title, url}`."}}},"FeaturedSnippetBlock":{"type":"object","additionalProperties":false,"required":["type","position","title","url","domain","text","links","items","facts"],"properties":{"type":{"const":"featured_snippet","description":"Block type, from the closed list below. Treat a type you do not know as `other`."},"position":{"type":"integer","minimum":1,"description":"1-based position of the block on the page."},"title":{"type":["string","null"],"description":"The block's own heading as shown; for organic, ads and featured snippets, the result title."},"url":{"type":["string","null"],"description":"Primary destination: the first item URL, otherwise the first link that is not Google Search chrome; null when the block links nowhere."},"domain":{"type":["string","null"],"description":"Host of `url`; for an unresolved Google redirect, the host shown on the page."},"text":{"type":"string","description":"Everything the block shows, in reading order, at most 4,000 characters. Empty string when the block shows no text, never null."},"links":{"type":"array","items":{"$ref":"#/components/schemas/Link"},"description":"Every link the block shows, in order, deduplicated by URL, as `{url, text}`. Google links included. Never null."},"items":{"type":"array","items":{"$ref":"#/components/schemas/FeaturedSnippetItem"},"description":"The entries the block lists, typed by the block type. Never null."},"facts":{"type":"array","items":{"$ref":"#/components/schemas/Fact"},"description":"Labelled values the block shows, as `{label, value, url}` with the label in the page language. Never null."}},"description":"The answer card Google promotes above the results, with the result it was taken from as its item."},"AdsItem":{"type":"object","additionalProperties":false,"required":["position","title","url","domain","displayed_url","source","snippet","highlights","price","price_value","old_price","old_price_value","currency","rating","review_count","extensions","sitelinks","tracking_url"],"properties":{"position":{"type":"integer","minimum":1,"description":"1-based rank among all items of the same block type on the page, so organic positions are the organic ranks even when the results are split across blocks."},"title":{"type":["string","null"],"description":"Title of the entry as shown."},"url":{"type":["string","null"],"description":"Destination URL, with Google redirect wrappers unwrapped. Null when the card links nowhere or Google exposes no destination."},"domain":{"type":["string","null"],"description":"Host of `url`."},"displayed_url":{"type":["string","null"],"description":"URL as displayed on the card."},"source":{"type":["string","null"],"description":"Site, publisher, channel, merchant or advertiser name as displayed."},"snippet":{"type":["string","null"],"description":"Description text of the card."},"highlights":{"type":"array","items":{"type":"string"},"description":"Terms Google bolded in the snippet."},"price":{"type":["string","null"],"description":"Price as shown."},"price_value":{"type":["number","null"],"description":"Price as a number, parsed from `price`."},"old_price":{"type":["string","null"],"description":"Struck-through price as shown."},"old_price_value":{"type":["number","null"],"description":"Struck-through price as a number."},"currency":{"type":["string","null"],"description":"ISO 4217 code when the page shows one or the symbol is unambiguous; a shared symbol such as $ or ¥ is resolved from the market the page was served for (`gl`)."},"rating":{"type":["number","null"],"minimum":0,"maximum":5,"description":"Star rating out of 5."},"review_count":{"type":["integer","null"],"minimum":0,"description":"Number of reviews. Compact suffixes such as 1.2K are expanded."},"extensions":{"type":"array","items":{"type":"string"},"description":"Short chips shown with the entry, as displayed: delivery notes, return policies, store ratings, comment counts."},"sitelinks":{"type":"array","items":{"$ref":"#/components/schemas/Sitelink"},"description":"Secondary links of the same result, as `{title, url}`."},"tracking_url":{"type":["string","null"],"description":"Google click-tracking URL of a sponsored entry, as rendered. `url` is the advertiser destination when Google exposes it, otherwise null."}}},"AdsBlock":{"type":"object","additionalProperties":false,"required":["type","position","title","url","domain","text","links","items","facts","placement"],"properties":{"type":{"const":"ads","description":"Block type, from the closed list below. Treat a type you do not know as `other`."},"position":{"type":"integer","minimum":1,"description":"1-based position of the block on the page."},"title":{"type":["string","null"],"description":"The block's own heading as shown; for organic, ads and featured snippets, the result title."},"url":{"type":["string","null"],"description":"Primary destination: the first item URL, otherwise the first link that is not Google Search chrome; null when the block links nowhere."},"domain":{"type":["string","null"],"description":"Host of `url`; for an unresolved Google redirect, the host shown on the page."},"text":{"type":"string","description":"Everything the block shows, in reading order, at most 4,000 characters. Empty string when the block shows no text, never null."},"links":{"type":"array","items":{"$ref":"#/components/schemas/Link"},"description":"Every link the block shows, in order, deduplicated by URL, as `{url, text}`. Google links included. Never null."},"items":{"type":"array","items":{"$ref":"#/components/schemas/AdsItem"},"description":"The entries the block lists, typed by the block type. Never null."},"facts":{"type":"array","items":{"$ref":"#/components/schemas/Fact"},"description":"Labelled values the block shows, as `{label, value, url}` with the label in the page language. Never null."},"placement":{"enum":["top","inline","bottom"],"description":"Where the ad block sits: `top`, `inline` or `bottom`."}},"description":"Text ads. `placement` says where the block sits on the page."},"ShoppingItem":{"type":"object","additionalProperties":false,"required":["position","title","url","domain","price","price_value","old_price","old_price_value","currency","badge","source","delivery","rating","review_count","extensions","sponsored","tracking_url"],"properties":{"position":{"type":"integer","minimum":1,"description":"1-based rank among all items of the same block type on the page, so organic positions are the organic ranks even when the results are split across blocks."},"title":{"type":["string","null"],"description":"Title of the entry as shown."},"url":{"type":["string","null"],"description":"Destination URL, with Google redirect wrappers unwrapped. Null when the card links nowhere or Google exposes no destination."},"domain":{"type":["string","null"],"description":"Host of `url`."},"price":{"type":["string","null"],"description":"Price as shown."},"price_value":{"type":["number","null"],"description":"Price as a number, parsed from `price`."},"old_price":{"type":["string","null"],"description":"Struck-through price as shown."},"old_price_value":{"type":["number","null"],"description":"Struck-through price as a number."},"currency":{"type":["string","null"],"description":"ISO 4217 code when the page shows one or the symbol is unambiguous; a shared symbol such as $ or ¥ is resolved from the market the page was served for (`gl`)."},"badge":{"type":["string","null"],"description":"Deal badge as shown, such as \"20% OFF\"."},"source":{"type":["string","null"],"description":"Site, publisher, channel, merchant or advertiser name as displayed."},"delivery":{"type":["string","null"],"description":"Delivery note as shown."},"rating":{"type":["number","null"],"minimum":0,"maximum":5,"description":"Star rating out of 5."},"review_count":{"type":["integer","null"],"minimum":0,"description":"Number of reviews. Compact suffixes such as 1.2K are expanded."},"extensions":{"type":"array","items":{"type":"string"},"description":"Short chips shown with the entry, as displayed: delivery notes, return policies, store ratings, comment counts."},"sponsored":{"type":"boolean","description":"True when the page marks the entry as sponsored."},"tracking_url":{"type":["string","null"],"description":"Google click-tracking URL of a sponsored entry, as rendered. `url` is the advertiser destination when Google exposes it, otherwise null."}}},"ShoppingBlock":{"type":"object","additionalProperties":false,"required":["type","position","title","url","domain","text","links","items","facts"],"properties":{"type":{"const":"shopping","description":"Block type, from the closed list below. Treat a type you do not know as `other`."},"position":{"type":"integer","minimum":1,"description":"1-based position of the block on the page."},"title":{"type":["string","null"],"description":"The block's own heading as shown; for organic, ads and featured snippets, the result title."},"url":{"type":["string","null"],"description":"Primary destination: the first item URL, otherwise the first link that is not Google Search chrome; null when the block links nowhere."},"domain":{"type":["string","null"],"description":"Host of `url`; for an unresolved Google redirect, the host shown on the page."},"text":{"type":"string","description":"Everything the block shows, in reading order, at most 4,000 characters. Empty string when the block shows no text, never null."},"links":{"type":"array","items":{"$ref":"#/components/schemas/Link"},"description":"Every link the block shows, in order, deduplicated by URL, as `{url, text}`. Google links included. Never null."},"items":{"type":"array","items":{"$ref":"#/components/schemas/ShoppingItem"},"description":"The entries the block lists, typed by the block type. Never null."},"facts":{"type":"array","items":{"$ref":"#/components/schemas/Fact"},"description":"Labelled values the block shows, as `{label, value, url}` with the label in the page language. Never null."}},"description":"Product cards: a product carousel, product ads, an offers grid, or the cards of the Shopping tab."},"LocalItem":{"type":"object","additionalProperties":false,"required":["position","title","url","domain","place_id","category","address","latitude","longitude","hours","status","price_level","rating","review_count","phone","website","snippet","service_options","sponsored","tracking_url","directions_url","menu_url","reviews_url","reserve_url","order_url","chat_url"],"properties":{"position":{"type":"integer","minimum":1,"description":"1-based rank among all items of the same block type on the page, so organic positions are the organic ranks even when the results are split across blocks."},"title":{"type":["string","null"],"description":"Title of the entry as shown."},"url":{"type":["string","null"],"description":"Destination URL, with Google redirect wrappers unwrapped. Null when the card links nowhere or Google exposes no destination."},"domain":{"type":["string","null"],"description":"Host of `url`."},"place_id":{"type":["string","null"],"description":"Google knowledge-graph identifier for the place, such as /g/11bw4ws2mt; null when unavailable. This is not a Google Places API place ID."},"category":{"type":["string","null"],"description":"Place category as shown."},"address":{"type":["string","null"],"description":"Address or area as shown."},"latitude":{"type":["number","null"],"minimum":-90,"maximum":90,"description":"Latitude from Google's map data for the place, when the page draws it on the map."},"longitude":{"type":["number","null"],"minimum":-180,"maximum":180,"description":"Longitude, same source."},"hours":{"type":["string","null"],"description":"Opening status and times as shown."},"status":{"type":["string","null"],"description":"On place cards, the opening status word as shown (Open, Closed, Opens soon). On flight cards, the flight status."},"price_level":{"type":["string","null"],"description":"Price level as shown, such as $$ or 20–40 €."},"rating":{"type":["number","null"],"minimum":0,"maximum":5,"description":"Star rating out of 5."},"review_count":{"type":["integer","null"],"minimum":0,"description":"Number of reviews. Compact suffixes such as 1.2K are expanded."},"phone":{"type":["string","null"],"description":"Phone number from the call action."},"website":{"type":["string","null"],"description":"Website action link, otherwise the first external link of the card."},"snippet":{"type":["string","null"],"description":"Description text of the card."},"service_options":{"type":"array","items":{"type":"string"},"description":"Service chips shown on the card, as displayed: Dine-in, Takeout, Delivery."},"sponsored":{"type":"boolean","description":"True when the page marks the entry as sponsored."},"tracking_url":{"type":["string","null"],"description":"Google click-tracking URL of a sponsored entry, as rendered. `url` is the advertiser destination when Google exposes it, otherwise null."},"directions_url":{"type":["string","null"],"description":"Directions action link."},"menu_url":{"type":["string","null"],"description":"Menu action link."},"reviews_url":{"type":["string","null"],"description":"Reviews action link."},"reserve_url":{"type":["string","null"],"description":"Reservation action link."},"order_url":{"type":["string","null"],"description":"Order action link."},"chat_url":{"type":["string","null"],"description":"Chat action link, such as WhatsApp."}}},"LocalBlock":{"type":"object","additionalProperties":false,"required":["type","position","title","url","domain","text","links","items","facts"],"properties":{"type":{"const":"local","description":"Block type, from the closed list below. Treat a type you do not know as `other`."},"position":{"type":"integer","minimum":1,"description":"1-based position of the block on the page."},"title":{"type":["string","null"],"description":"The block's own heading as shown; for organic, ads and featured snippets, the result title."},"url":{"type":["string","null"],"description":"Primary destination: the first item URL, otherwise the first link that is not Google Search chrome; null when the block links nowhere."},"domain":{"type":["string","null"],"description":"Host of `url`; for an unresolved Google redirect, the host shown on the page."},"text":{"type":"string","description":"Everything the block shows, in reading order, at most 4,000 characters. Empty string when the block shows no text, never null."},"links":{"type":"array","items":{"$ref":"#/components/schemas/Link"},"description":"Every link the block shows, in order, deduplicated by URL, as `{url, text}`. Google links included. Never null."},"items":{"type":"array","items":{"$ref":"#/components/schemas/LocalItem"},"description":"The entries the block lists, typed by the block type. Never null."},"facts":{"type":"array","items":{"$ref":"#/components/schemas/Fact"},"description":"Labelled values the block shows, as `{label, value, url}` with the label in the page language. Never null."}},"description":"Place cards: the local pack on a web page or the cards of the local tab."},"HotelsItem":{"type":"object","additionalProperties":false,"required":["position","title","url","domain","price","price_value","currency","snippet","badge","rating","review_count"],"properties":{"position":{"type":"integer","minimum":1,"description":"1-based rank among all items of the same block type on the page, so organic positions are the organic ranks even when the results are split across blocks."},"title":{"type":["string","null"],"description":"Title of the entry as shown."},"url":{"type":["string","null"],"description":"Destination URL, with Google redirect wrappers unwrapped. Null when the card links nowhere or Google exposes no destination."},"domain":{"type":["string","null"],"description":"Host of `url`."},"price":{"type":["string","null"],"description":"Price as shown."},"price_value":{"type":["number","null"],"description":"Price as a number, parsed from `price`."},"currency":{"type":["string","null"],"description":"ISO 4217 code when the page shows one or the symbol is unambiguous; a shared symbol such as $ or ¥ is resolved from the market the page was served for (`gl`)."},"snippet":{"type":["string","null"],"description":"Description text of the card."},"badge":{"type":["string","null"],"description":"Deal badge as shown, such as \"20% OFF\"."},"rating":{"type":["number","null"],"minimum":0,"maximum":5,"description":"Star rating out of 5."},"review_count":{"type":["integer","null"],"minimum":0,"description":"Number of reviews. Compact suffixes such as 1.2K are expanded."}}},"HotelsBlock":{"type":"object","additionalProperties":false,"required":["type","position","title","url","domain","text","links","items","facts"],"properties":{"type":{"const":"hotels","description":"Block type, from the closed list below. Treat a type you do not know as `other`."},"position":{"type":"integer","minimum":1,"description":"1-based position of the block on the page."},"title":{"type":["string","null"],"description":"The block's own heading as shown; for organic, ads and featured snippets, the result title."},"url":{"type":["string","null"],"description":"Primary destination: the first item URL, otherwise the first link that is not Google Search chrome; null when the block links nowhere."},"domain":{"type":["string","null"],"description":"Host of `url`; for an unresolved Google redirect, the host shown on the page."},"text":{"type":"string","description":"Everything the block shows, in reading order, at most 4,000 characters. Empty string when the block shows no text, never null."},"links":{"type":"array","items":{"$ref":"#/components/schemas/Link"},"description":"Every link the block shows, in order, deduplicated by URL, as `{url, text}`. Google links included. Never null."},"items":{"type":"array","items":{"$ref":"#/components/schemas/HotelsItem"},"description":"The entries the block lists, typed by the block type. Never null."},"facts":{"type":"array","items":{"$ref":"#/components/schemas/Fact"},"description":"Labelled values the block shows, as `{label, value, url}` with the label in the page language. Never null."}},"description":"Hotel cards with prices."},"ImagesItem":{"type":"object","additionalProperties":false,"required":["position","title","url","domain","source","image_url","width","height"],"properties":{"position":{"type":"integer","minimum":1,"description":"1-based rank among all items of the same block type on the page, so organic positions are the organic ranks even when the results are split across blocks."},"title":{"type":["string","null"],"description":"Title of the entry as shown."},"url":{"type":["string","null"],"description":"Destination URL, with Google redirect wrappers unwrapped. Null when the card links nowhere or Google exposes no destination."},"domain":{"type":["string","null"],"description":"Host of `url`."},"source":{"type":["string","null"],"description":"Site, publisher, channel, merchant or advertiser name as displayed."},"image_url":{"type":["string","null"],"description":"URL of the original image."},"width":{"type":["integer","null"],"minimum":1,"description":"Width of the original image in pixels."},"height":{"type":["integer","null"],"minimum":1,"description":"Height of the original image in pixels."}}},"ImagesBlock":{"type":"object","additionalProperties":false,"required":["type","position","title","url","domain","text","links","items","facts"],"properties":{"type":{"const":"images","description":"Block type, from the closed list below. Treat a type you do not know as `other`."},"position":{"type":"integer","minimum":1,"description":"1-based position of the block on the page."},"title":{"type":["string","null"],"description":"The block's own heading as shown; for organic, ads and featured snippets, the result title."},"url":{"type":["string","null"],"description":"Primary destination: the first item URL, otherwise the first link that is not Google Search chrome; null when the block links nowhere."},"domain":{"type":["string","null"],"description":"Host of `url`; for an unresolved Google redirect, the host shown on the page."},"text":{"type":"string","description":"Everything the block shows, in reading order, at most 4,000 characters. Empty string when the block shows no text, never null."},"links":{"type":"array","items":{"$ref":"#/components/schemas/Link"},"description":"Every link the block shows, in order, deduplicated by URL, as `{url, text}`. Google links included. Never null."},"items":{"type":"array","items":{"$ref":"#/components/schemas/ImagesItem"},"description":"The entries the block lists, typed by the block type. Never null."},"facts":{"type":"array","items":{"$ref":"#/components/schemas/Fact"},"description":"Labelled values the block shows, as `{label, value, url}` with the label in the page language. Never null."}},"description":"Image results: the image strip on a web page or the grid of the Images tab."},"VideosItem":{"type":"object","additionalProperties":false,"required":["position","title","url","domain","platform","channel","date","duration","snippet"],"properties":{"position":{"type":"integer","minimum":1,"description":"1-based rank among all items of the same block type on the page, so organic positions are the organic ranks even when the results are split across blocks."},"title":{"type":["string","null"],"description":"Title of the entry as shown."},"url":{"type":["string","null"],"description":"Destination URL, with Google redirect wrappers unwrapped. Null when the card links nowhere or Google exposes no destination."},"domain":{"type":["string","null"],"description":"Host of `url`."},"platform":{"type":["string","null"],"description":"Video or discussion platform as shown, such as YouTube or Reddit."},"channel":{"type":["string","null"],"description":"Channel or account as shown."},"date":{"type":["string","null"],"description":"Date or age label as shown."},"duration":{"type":["string","null"],"description":"Video length as shown."},"snippet":{"type":["string","null"],"description":"Description text of the card."}}},"VideosBlock":{"type":"object","additionalProperties":false,"required":["type","position","title","url","domain","text","links","items","facts"],"properties":{"type":{"const":"videos","description":"Block type, from the closed list below. Treat a type you do not know as `other`."},"position":{"type":"integer","minimum":1,"description":"1-based position of the block on the page."},"title":{"type":["string","null"],"description":"The block's own heading as shown; for organic, ads and featured snippets, the result title."},"url":{"type":["string","null"],"description":"Primary destination: the first item URL, otherwise the first link that is not Google Search chrome; null when the block links nowhere."},"domain":{"type":["string","null"],"description":"Host of `url`; for an unresolved Google redirect, the host shown on the page."},"text":{"type":"string","description":"Everything the block shows, in reading order, at most 4,000 characters. Empty string when the block shows no text, never null."},"links":{"type":"array","items":{"$ref":"#/components/schemas/Link"},"description":"Every link the block shows, in order, deduplicated by URL, as `{url, text}`. Google links included. Never null."},"items":{"type":"array","items":{"$ref":"#/components/schemas/VideosItem"},"description":"The entries the block lists, typed by the block type. Never null."},"facts":{"type":"array","items":{"$ref":"#/components/schemas/Fact"},"description":"Labelled values the block shows, as `{label, value, url}` with the label in the page language. Never null."}},"description":"Video cards: a video carousel, short videos, or the Videos tab."},"NewsItem":{"type":"object","additionalProperties":false,"required":["position","title","url","domain","source","date","snippet"],"properties":{"position":{"type":"integer","minimum":1,"description":"1-based rank among all items of the same block type on the page, so organic positions are the organic ranks even when the results are split across blocks."},"title":{"type":["string","null"],"description":"Title of the entry as shown."},"url":{"type":["string","null"],"description":"Destination URL, with Google redirect wrappers unwrapped. Null when the card links nowhere or Google exposes no destination."},"domain":{"type":["string","null"],"description":"Host of `url`."},"source":{"type":["string","null"],"description":"Site, publisher, channel, merchant or advertiser name as displayed."},"date":{"type":["string","null"],"description":"Date or age label as shown."},"snippet":{"type":["string","null"],"description":"Description text of the card."}}},"NewsBlock":{"type":"object","additionalProperties":false,"required":["type","position","title","url","domain","text","links","items","facts"],"properties":{"type":{"const":"news","description":"Block type, from the closed list below. Treat a type you do not know as `other`."},"position":{"type":"integer","minimum":1,"description":"1-based position of the block on the page."},"title":{"type":["string","null"],"description":"The block's own heading as shown; for organic, ads and featured snippets, the result title."},"url":{"type":["string","null"],"description":"Primary destination: the first item URL, otherwise the first link that is not Google Search chrome; null when the block links nowhere."},"domain":{"type":["string","null"],"description":"Host of `url`; for an unresolved Google redirect, the host shown on the page."},"text":{"type":"string","description":"Everything the block shows, in reading order, at most 4,000 characters. Empty string when the block shows no text, never null."},"links":{"type":"array","items":{"$ref":"#/components/schemas/Link"},"description":"Every link the block shows, in order, deduplicated by URL, as `{url, text}`. Google links included. Never null."},"items":{"type":"array","items":{"$ref":"#/components/schemas/NewsItem"},"description":"The entries the block lists, typed by the block type. Never null."},"facts":{"type":"array","items":{"$ref":"#/components/schemas/Fact"},"description":"Labelled values the block shows, as `{label, value, url}` with the label in the page language. Never null."}},"description":"News cards: top stories on a web page or the News tab."},"KnowledgeItem":{"type":"object","additionalProperties":false,"required":["position","title","url","domain"],"properties":{"position":{"type":"integer","minimum":1,"description":"1-based rank among all items of the same block type on the page, so organic positions are the organic ranks even when the results are split across blocks."},"title":{"type":["string","null"],"description":"Title of the entry as shown."},"url":{"type":["string","null"],"description":"Destination URL, with Google redirect wrappers unwrapped. Null when the card links nowhere or Google exposes no destination."},"domain":{"type":["string","null"],"description":"Host of `url`."}}},"KnowledgeBlock":{"type":"object","additionalProperties":false,"required":["type","position","title","url","domain","text","links","items","facts","subtitle","description","description_source","description_url","website","address","phone","hours","rating","review_count"],"properties":{"type":{"const":"knowledge","description":"Block type, from the closed list below. Treat a type you do not know as `other`."},"position":{"type":"integer","minimum":1,"description":"1-based position of the block on the page."},"title":{"type":["string","null"],"description":"The block's own heading as shown; for organic, ads and featured snippets, the result title."},"url":{"type":["string","null"],"description":"Primary destination: the first item URL, otherwise the first link that is not Google Search chrome; null when the block links nowhere."},"domain":{"type":["string","null"],"description":"Host of `url`; for an unresolved Google redirect, the host shown on the page."},"text":{"type":"string","description":"Everything the block shows, in reading order, at most 4,000 characters. Empty string when the block shows no text, never null."},"links":{"type":"array","items":{"$ref":"#/components/schemas/Link"},"description":"Every link the block shows, in order, deduplicated by URL, as `{url, text}`. Google links included. Never null."},"items":{"type":"array","items":{"$ref":"#/components/schemas/KnowledgeItem"},"description":"The entries the block lists, typed by the block type. Never null."},"facts":{"type":"array","items":{"$ref":"#/components/schemas/Fact"},"description":"Labelled values the block shows, as `{label, value, url}` with the label in the page language. Never null."},"subtitle":{"type":["string","null"],"description":"Entity descriptor shown under the title."},"description":{"type":["string","null"],"description":"The description paragraph."},"description_source":{"type":["string","null"],"description":"Name of the site the description is attributed to, when shown."},"description_url":{"type":["string","null"],"description":"Link of the description attribution."},"website":{"type":["string","null"],"description":"Official website link when the panel shows one."},"address":{"type":["string","null"],"description":"Address as shown."},"phone":{"type":["string","null"],"description":"Phone number as shown."},"hours":{"type":["string","null"],"description":"Opening status and times as shown."},"rating":{"type":["number","null"],"minimum":0,"maximum":5,"description":"Star rating out of 5."},"review_count":{"type":["integer","null"],"minimum":0,"description":"Number of reviews."}},"description":"The knowledge panel of an entity: description, facts and contact details; linked entries as items."},"ProfilesItem":{"type":"object","additionalProperties":false,"required":["position","title","url","domain"],"properties":{"position":{"type":"integer","minimum":1,"description":"1-based rank among all items of the same block type on the page, so organic positions are the organic ranks even when the results are split across blocks."},"title":{"type":["string","null"],"description":"Title of the entry as shown."},"url":{"type":["string","null"],"description":"Destination URL, with Google redirect wrappers unwrapped. Null when the card links nowhere or Google exposes no destination."},"domain":{"type":["string","null"],"description":"Host of `url`."}}},"ProfilesBlock":{"type":"object","additionalProperties":false,"required":["type","position","title","url","domain","text","links","items","facts"],"properties":{"type":{"const":"profiles","description":"Block type, from the closed list below. Treat a type you do not know as `other`."},"position":{"type":"integer","minimum":1,"description":"1-based position of the block on the page."},"title":{"type":["string","null"],"description":"The block's own heading as shown; for organic, ads and featured snippets, the result title."},"url":{"type":["string","null"],"description":"Primary destination: the first item URL, otherwise the first link that is not Google Search chrome; null when the block links nowhere."},"domain":{"type":["string","null"],"description":"Host of `url`; for an unresolved Google redirect, the host shown on the page."},"text":{"type":"string","description":"Everything the block shows, in reading order, at most 4,000 characters. Empty string when the block shows no text, never null."},"links":{"type":"array","items":{"$ref":"#/components/schemas/Link"},"description":"Every link the block shows, in order, deduplicated by URL, as `{url, text}`. Google links included. Never null."},"items":{"type":"array","items":{"$ref":"#/components/schemas/ProfilesItem"},"description":"The entries the block lists, typed by the block type. Never null."},"facts":{"type":"array","items":{"$ref":"#/components/schemas/Fact"},"description":"Labelled values the block shows, as `{label, value, url}` with the label in the page language. Never null."}},"description":"Social profile links of an entity."},"AiOverviewItem":{"type":"object","additionalProperties":false,"required":["position","title","url","domain"],"properties":{"position":{"type":"integer","minimum":1,"description":"1-based rank among all items of the same block type on the page, so organic positions are the organic ranks even when the results are split across blocks."},"title":{"type":["string","null"],"description":"Title of the entry as shown."},"url":{"type":["string","null"],"description":"Destination URL, with Google redirect wrappers unwrapped. Null when the card links nowhere or Google exposes no destination."},"domain":{"type":["string","null"],"description":"Host of `url`."}}},"AiOverviewBlock":{"type":"object","additionalProperties":false,"required":["type","position","title","url","domain","text","links","items","facts","display","sections"],"properties":{"type":{"const":"ai_overview","description":"Block type, from the closed list below. Treat a type you do not know as `other`."},"position":{"type":"integer","minimum":1,"description":"1-based position of the block on the page."},"title":{"type":["string","null"],"description":"The block's own heading as shown; for organic, ads and featured snippets, the result title."},"url":{"type":["string","null"],"description":"Primary destination: the first item URL, otherwise the first link that is not Google Search chrome; null when the block links nowhere."},"domain":{"type":["string","null"],"description":"Host of `url`; for an unresolved Google redirect, the host shown on the page."},"text":{"type":"string","description":"Everything the block shows, in reading order, at most 4,000 characters. Empty string when the block shows no text, never null."},"links":{"type":"array","items":{"$ref":"#/components/schemas/Link"},"description":"Every link the block shows, in order, deduplicated by URL, as `{url, text}`. Google links included. Never null."},"items":{"type":"array","items":{"$ref":"#/components/schemas/AiOverviewItem"},"description":"The entries the block lists, typed by the block type. Never null."},"facts":{"type":"array","items":{"$ref":"#/components/schemas/Fact"},"description":"Labelled values the block shows, as `{label, value, url}` with the label in the page language. Never null."},"display":{"enum":["complete","collapsed","loading"],"description":"How Google rendered the overview: `complete`, `collapsed` (more behind a tap) or `loading` (still generating when captured; text is empty)."},"sections":{"type":"array","items":{"$ref":"#/components/schemas/Section"},"description":"The overview text as typed pieces in reading order: `{kind, text}` with kind `heading`, `paragraph` or `list_item`."}},"description":"Google's AI overview. `sections` is the text in typed pieces; items are the cited sources."},"PeopleAlsoAskItem":{"type":"object","additionalProperties":false,"required":["position","title","url","domain","snippet","source"],"properties":{"position":{"type":"integer","minimum":1,"description":"1-based rank among all items of the same block type on the page, so organic positions are the organic ranks even when the results are split across blocks."},"title":{"type":["string","null"],"description":"Title of the entry as shown."},"url":{"type":["string","null"],"description":"Destination URL, with Google redirect wrappers unwrapped. Null when the card links nowhere or Google exposes no destination."},"domain":{"type":["string","null"],"description":"Host of `url`."},"snippet":{"type":["string","null"],"description":"Description text of the card."},"source":{"type":["string","null"],"description":"Site, publisher, channel, merchant or advertiser name as displayed."}}},"PeopleAlsoAskBlock":{"type":"object","additionalProperties":false,"required":["type","position","title","url","domain","text","links","items","facts"],"properties":{"type":{"const":"people_also_ask","description":"Block type, from the closed list below. Treat a type you do not know as `other`."},"position":{"type":"integer","minimum":1,"description":"1-based position of the block on the page."},"title":{"type":["string","null"],"description":"The block's own heading as shown; for organic, ads and featured snippets, the result title."},"url":{"type":["string","null"],"description":"Primary destination: the first item URL, otherwise the first link that is not Google Search chrome; null when the block links nowhere."},"domain":{"type":["string","null"],"description":"Host of `url`; for an unresolved Google redirect, the host shown on the page."},"text":{"type":"string","description":"Everything the block shows, in reading order, at most 4,000 characters. Empty string when the block shows no text, never null."},"links":{"type":"array","items":{"$ref":"#/components/schemas/Link"},"description":"Every link the block shows, in order, deduplicated by URL, as `{url, text}`. Google links included. Never null."},"items":{"type":"array","items":{"$ref":"#/components/schemas/PeopleAlsoAskItem"},"description":"The entries the block lists, typed by the block type. Never null."},"facts":{"type":"array","items":{"$ref":"#/components/schemas/Fact"},"description":"Labelled values the block shows, as `{label, value, url}` with the label in the page language. Never null."}},"description":"Question accordion. One item per question; the answer and its source when Google rendered them."},"ThingsToKnowItem":{"type":"object","additionalProperties":false,"required":["position","title","url","domain","snippet","source"],"properties":{"position":{"type":"integer","minimum":1,"description":"1-based rank among all items of the same block type on the page, so organic positions are the organic ranks even when the results are split across blocks."},"title":{"type":["string","null"],"description":"Title of the entry as shown."},"url":{"type":["string","null"],"description":"Destination URL, with Google redirect wrappers unwrapped. Null when the card links nowhere or Google exposes no destination."},"domain":{"type":["string","null"],"description":"Host of `url`."},"snippet":{"type":["string","null"],"description":"Description text of the card."},"source":{"type":["string","null"],"description":"Site, publisher, channel, merchant or advertiser name as displayed."}}},"ThingsToKnowBlock":{"type":"object","additionalProperties":false,"required":["type","position","title","url","domain","text","links","items","facts"],"properties":{"type":{"const":"things_to_know","description":"Block type, from the closed list below. Treat a type you do not know as `other`."},"position":{"type":"integer","minimum":1,"description":"1-based position of the block on the page."},"title":{"type":["string","null"],"description":"The block's own heading as shown; for organic, ads and featured snippets, the result title."},"url":{"type":["string","null"],"description":"Primary destination: the first item URL, otherwise the first link that is not Google Search chrome; null when the block links nowhere."},"domain":{"type":["string","null"],"description":"Host of `url`; for an unresolved Google redirect, the host shown on the page."},"text":{"type":"string","description":"Everything the block shows, in reading order, at most 4,000 characters. Empty string when the block shows no text, never null."},"links":{"type":"array","items":{"$ref":"#/components/schemas/Link"},"description":"Every link the block shows, in order, deduplicated by URL, as `{url, text}`. Google links included. Never null."},"items":{"type":"array","items":{"$ref":"#/components/schemas/ThingsToKnowItem"},"description":"The entries the block lists, typed by the block type. Never null."},"facts":{"type":"array","items":{"$ref":"#/components/schemas/Fact"},"description":"Labelled values the block shows, as `{label, value, url}` with the label in the page language. Never null."}},"description":"The \"Things to know\" accordion."},"RelatedSearchesItem":{"type":"object","additionalProperties":false,"required":["position","title","url","domain"],"properties":{"position":{"type":"integer","minimum":1,"description":"1-based rank among all items of the same block type on the page, so organic positions are the organic ranks even when the results are split across blocks."},"title":{"type":["string","null"],"description":"Title of the entry as shown."},"url":{"type":["string","null"],"description":"Destination URL, with Google redirect wrappers unwrapped. Null when the card links nowhere or Google exposes no destination."},"domain":{"type":["string","null"],"description":"Host of `url`."}}},"RelatedSearchesBlock":{"type":"object","additionalProperties":false,"required":["type","position","title","url","domain","text","links","items","facts"],"properties":{"type":{"const":"related_searches","description":"Block type, from the closed list below. Treat a type you do not know as `other`."},"position":{"type":"integer","minimum":1,"description":"1-based position of the block on the page."},"title":{"type":["string","null"],"description":"The block's own heading as shown; for organic, ads and featured snippets, the result title."},"url":{"type":["string","null"],"description":"Primary destination: the first item URL, otherwise the first link that is not Google Search chrome; null when the block links nowhere."},"domain":{"type":["string","null"],"description":"Host of `url`; for an unresolved Google redirect, the host shown on the page."},"text":{"type":"string","description":"Everything the block shows, in reading order, at most 4,000 characters. Empty string when the block shows no text, never null."},"links":{"type":"array","items":{"$ref":"#/components/schemas/Link"},"description":"Every link the block shows, in order, deduplicated by URL, as `{url, text}`. Google links included. Never null."},"items":{"type":"array","items":{"$ref":"#/components/schemas/RelatedSearchesItem"},"description":"The entries the block lists, typed by the block type. Never null."},"facts":{"type":"array","items":{"$ref":"#/components/schemas/Fact"},"description":"Labelled values the block shows, as `{label, value, url}` with the label in the page language. Never null."}},"description":"Related search links; every item links to a Google search."},"DiscussionsItem":{"type":"object","additionalProperties":false,"required":["position","title","url","domain","source","platform","date","snippet","extensions"],"properties":{"position":{"type":"integer","minimum":1,"description":"1-based rank among all items of the same block type on the page, so organic positions are the organic ranks even when the results are split across blocks."},"title":{"type":["string","null"],"description":"Title of the entry as shown."},"url":{"type":["string","null"],"description":"Destination URL, with Google redirect wrappers unwrapped. Null when the card links nowhere or Google exposes no destination."},"domain":{"type":["string","null"],"description":"Host of `url`."},"source":{"type":["string","null"],"description":"Site, publisher, channel, merchant or advertiser name as displayed."},"platform":{"type":["string","null"],"description":"Video or discussion platform as shown, such as YouTube or Reddit."},"date":{"type":["string","null"],"description":"Date or age label as shown."},"snippet":{"type":["string","null"],"description":"Description text of the card."},"extensions":{"type":"array","items":{"type":"string"},"description":"Short chips shown with the entry, as displayed: delivery notes, return policies, store ratings, comment counts."}}},"DiscussionsBlock":{"type":"object","additionalProperties":false,"required":["type","position","title","url","domain","text","links","items","facts"],"properties":{"type":{"const":"discussions","description":"Block type, from the closed list below. Treat a type you do not know as `other`."},"position":{"type":"integer","minimum":1,"description":"1-based position of the block on the page."},"title":{"type":["string","null"],"description":"The block's own heading as shown; for organic, ads and featured snippets, the result title."},"url":{"type":["string","null"],"description":"Primary destination: the first item URL, otherwise the first link that is not Google Search chrome; null when the block links nowhere."},"domain":{"type":["string","null"],"description":"Host of `url`; for an unresolved Google redirect, the host shown on the page."},"text":{"type":"string","description":"Everything the block shows, in reading order, at most 4,000 characters. Empty string when the block shows no text, never null."},"links":{"type":"array","items":{"$ref":"#/components/schemas/Link"},"description":"Every link the block shows, in order, deduplicated by URL, as `{url, text}`. Google links included. Never null."},"items":{"type":"array","items":{"$ref":"#/components/schemas/DiscussionsItem"},"description":"The entries the block lists, typed by the block type. Never null."},"facts":{"type":"array","items":{"$ref":"#/components/schemas/Fact"},"description":"Labelled values the block shows, as `{label, value, url}` with the label in the page language. Never null."}},"description":"Forum and discussion posts."},"RecipesItem":{"type":"object","additionalProperties":false,"required":["position","title","url","domain","source","rating","review_count","time","ingredients"],"properties":{"position":{"type":"integer","minimum":1,"description":"1-based rank among all items of the same block type on the page, so organic positions are the organic ranks even when the results are split across blocks."},"title":{"type":["string","null"],"description":"Title of the entry as shown."},"url":{"type":["string","null"],"description":"Destination URL, with Google redirect wrappers unwrapped. Null when the card links nowhere or Google exposes no destination."},"domain":{"type":["string","null"],"description":"Host of `url`."},"source":{"type":["string","null"],"description":"Site, publisher, channel, merchant or advertiser name as displayed."},"rating":{"type":["number","null"],"minimum":0,"maximum":5,"description":"Star rating out of 5."},"review_count":{"type":["integer","null"],"minimum":0,"description":"Number of reviews. Compact suffixes such as 1.2K are expanded."},"time":{"type":["string","null"],"description":"Preparation time as shown."},"ingredients":{"type":["string","null"],"description":"Ingredient line as shown."}}},"RecipesBlock":{"type":"object","additionalProperties":false,"required":["type","position","title","url","domain","text","links","items","facts"],"properties":{"type":{"const":"recipes","description":"Block type, from the closed list below. Treat a type you do not know as `other`."},"position":{"type":"integer","minimum":1,"description":"1-based position of the block on the page."},"title":{"type":["string","null"],"description":"The block's own heading as shown; for organic, ads and featured snippets, the result title."},"url":{"type":["string","null"],"description":"Primary destination: the first item URL, otherwise the first link that is not Google Search chrome; null when the block links nowhere."},"domain":{"type":["string","null"],"description":"Host of `url`; for an unresolved Google redirect, the host shown on the page."},"text":{"type":"string","description":"Everything the block shows, in reading order, at most 4,000 characters. Empty string when the block shows no text, never null."},"links":{"type":"array","items":{"$ref":"#/components/schemas/Link"},"description":"Every link the block shows, in order, deduplicated by URL, as `{url, text}`. Google links included. Never null."},"items":{"type":"array","items":{"$ref":"#/components/schemas/RecipesItem"},"description":"The entries the block lists, typed by the block type. Never null."},"facts":{"type":"array","items":{"$ref":"#/components/schemas/Fact"},"description":"Labelled values the block shows, as `{label, value, url}` with the label in the page language. Never null."}},"description":"Recipe cards."},"JobsItem":{"type":"object","additionalProperties":false,"required":["position","title","url","domain","company","location","via"],"properties":{"position":{"type":"integer","minimum":1,"description":"1-based rank among all items of the same block type on the page, so organic positions are the organic ranks even when the results are split across blocks."},"title":{"type":["string","null"],"description":"Title of the entry as shown."},"url":{"type":["string","null"],"description":"Destination URL, with Google redirect wrappers unwrapped. Null when the card links nowhere or Google exposes no destination."},"domain":{"type":["string","null"],"description":"Host of `url`."},"company":{"type":["string","null"],"description":"Employer as shown."},"location":{"type":["string","null"],"description":"Job location as shown."},"via":{"type":["string","null"],"description":"Job board the posting comes via."}}},"JobsBlock":{"type":"object","additionalProperties":false,"required":["type","position","title","url","domain","text","links","items","facts"],"properties":{"type":{"const":"jobs","description":"Block type, from the closed list below. Treat a type you do not know as `other`."},"position":{"type":"integer","minimum":1,"description":"1-based position of the block on the page."},"title":{"type":["string","null"],"description":"The block's own heading as shown; for organic, ads and featured snippets, the result title."},"url":{"type":["string","null"],"description":"Primary destination: the first item URL, otherwise the first link that is not Google Search chrome; null when the block links nowhere."},"domain":{"type":["string","null"],"description":"Host of `url`; for an unresolved Google redirect, the host shown on the page."},"text":{"type":"string","description":"Everything the block shows, in reading order, at most 4,000 characters. Empty string when the block shows no text, never null."},"links":{"type":"array","items":{"$ref":"#/components/schemas/Link"},"description":"Every link the block shows, in order, deduplicated by URL, as `{url, text}`. Google links included. Never null."},"items":{"type":"array","items":{"$ref":"#/components/schemas/JobsItem"},"description":"The entries the block lists, typed by the block type. Never null."},"facts":{"type":"array","items":{"$ref":"#/components/schemas/Fact"},"description":"Labelled values the block shows, as `{label, value, url}` with the label in the page language. Never null."}},"description":"Job postings."},"WebsitesItem":{"type":"object","additionalProperties":false,"required":["position","title","url","domain","source","snippet"],"properties":{"position":{"type":"integer","minimum":1,"description":"1-based rank among all items of the same block type on the page, so organic positions are the organic ranks even when the results are split across blocks."},"title":{"type":["string","null"],"description":"Title of the entry as shown."},"url":{"type":["string","null"],"description":"Destination URL, with Google redirect wrappers unwrapped. Null when the card links nowhere or Google exposes no destination."},"domain":{"type":["string","null"],"description":"Host of `url`."},"source":{"type":["string","null"],"description":"Site, publisher, channel, merchant or advertiser name as displayed."},"snippet":{"type":["string","null"],"description":"Description text of the card."}}},"WebsitesBlock":{"type":"object","additionalProperties":false,"required":["type","position","title","url","domain","text","links","items","facts"],"properties":{"type":{"const":"websites","description":"Block type, from the closed list below. Treat a type you do not know as `other`."},"position":{"type":"integer","minimum":1,"description":"1-based position of the block on the page."},"title":{"type":["string","null"],"description":"The block's own heading as shown; for organic, ads and featured snippets, the result title."},"url":{"type":["string","null"],"description":"Primary destination: the first item URL, otherwise the first link that is not Google Search chrome; null when the block links nowhere."},"domain":{"type":["string","null"],"description":"Host of `url`; for an unresolved Google redirect, the host shown on the page."},"text":{"type":"string","description":"Everything the block shows, in reading order, at most 4,000 characters. Empty string when the block shows no text, never null."},"links":{"type":"array","items":{"$ref":"#/components/schemas/Link"},"description":"Every link the block shows, in order, deduplicated by URL, as `{url, text}`. Google links included. Never null."},"items":{"type":"array","items":{"$ref":"#/components/schemas/WebsitesItem"},"description":"The entries the block lists, typed by the block type. Never null."},"facts":{"type":"array","items":{"$ref":"#/components/schemas/Fact"},"description":"Labelled values the block shows, as `{label, value, url}` with the label in the page language. Never null."}},"description":"Site cards such as \"Product sites\"."},"AppsItem":{"type":"object","additionalProperties":false,"required":["position","title","url","domain","store","snippet"],"properties":{"position":{"type":"integer","minimum":1,"description":"1-based rank among all items of the same block type on the page, so organic positions are the organic ranks even when the results are split across blocks."},"title":{"type":["string","null"],"description":"Title of the entry as shown."},"url":{"type":["string","null"],"description":"Destination URL, with Google redirect wrappers unwrapped. Null when the card links nowhere or Google exposes no destination."},"domain":{"type":["string","null"],"description":"Host of `url`."},"store":{"type":["string","null"],"description":"App store as shown."},"snippet":{"type":["string","null"],"description":"Description text of the card."}}},"AppsBlock":{"type":"object","additionalProperties":false,"required":["type","position","title","url","domain","text","links","items","facts"],"properties":{"type":{"const":"apps","description":"Block type, from the closed list below. Treat a type you do not know as `other`."},"position":{"type":"integer","minimum":1,"description":"1-based position of the block on the page."},"title":{"type":["string","null"],"description":"The block's own heading as shown; for organic, ads and featured snippets, the result title."},"url":{"type":["string","null"],"description":"Primary destination: the first item URL, otherwise the first link that is not Google Search chrome; null when the block links nowhere."},"domain":{"type":["string","null"],"description":"Host of `url`; for an unresolved Google redirect, the host shown on the page."},"text":{"type":"string","description":"Everything the block shows, in reading order, at most 4,000 characters. Empty string when the block shows no text, never null."},"links":{"type":"array","items":{"$ref":"#/components/schemas/Link"},"description":"Every link the block shows, in order, deduplicated by URL, as `{url, text}`. Google links included. Never null."},"items":{"type":"array","items":{"$ref":"#/components/schemas/AppsItem"},"description":"The entries the block lists, typed by the block type. Never null."},"facts":{"type":"array","items":{"$ref":"#/components/schemas/Fact"},"description":"Labelled values the block shows, as `{label, value, url}` with the label in the page language. Never null."}},"description":"App cards."},"WeatherItem":{"type":"object","additionalProperties":false,"required":["position","title","url","domain"],"properties":{"position":{"type":"integer","minimum":1,"description":"1-based rank among all items of the same block type on the page, so organic positions are the organic ranks even when the results are split across blocks."},"title":{"type":["string","null"],"description":"Title of the entry as shown."},"url":{"type":["string","null"],"description":"Destination URL, with Google redirect wrappers unwrapped. Null when the card links nowhere or Google exposes no destination."},"domain":{"type":["string","null"],"description":"Host of `url`."}}},"WeatherBlock":{"type":"object","additionalProperties":false,"required":["type","position","title","url","domain","text","links","items","facts","location","temperature","condition"],"properties":{"type":{"const":"weather","description":"Block type, from the closed list below. Treat a type you do not know as `other`."},"position":{"type":"integer","minimum":1,"description":"1-based position of the block on the page."},"title":{"type":["string","null"],"description":"The block's own heading as shown; for organic, ads and featured snippets, the result title."},"url":{"type":["string","null"],"description":"Primary destination: the first item URL, otherwise the first link that is not Google Search chrome; null when the block links nowhere."},"domain":{"type":["string","null"],"description":"Host of `url`; for an unresolved Google redirect, the host shown on the page."},"text":{"type":"string","description":"Everything the block shows, in reading order, at most 4,000 characters. Empty string when the block shows no text, never null."},"links":{"type":"array","items":{"$ref":"#/components/schemas/Link"},"description":"Every link the block shows, in order, deduplicated by URL, as `{url, text}`. Google links included. Never null."},"items":{"type":"array","items":{"$ref":"#/components/schemas/WeatherItem"},"description":"The entries the block lists, typed by the block type. Never null."},"facts":{"type":"array","items":{"$ref":"#/components/schemas/Fact"},"description":"Labelled values the block shows, as `{label, value, url}` with the label in the page language. Never null."},"location":{"type":["string","null"],"description":"Place the answer is about."},"temperature":{"type":["string","null"],"description":"Current temperature as shown."},"condition":{"type":["string","null"],"description":"Current condition as shown."}},"description":"Weather answer for a place: current temperature and condition as block fields, forecast rows as facts."},"CurrencyItem":{"type":"object","additionalProperties":false,"required":["position","title","url","domain"],"properties":{"position":{"type":"integer","minimum":1,"description":"1-based rank among all items of the same block type on the page, so organic positions are the organic ranks even when the results are split across blocks."},"title":{"type":["string","null"],"description":"Title of the entry as shown."},"url":{"type":["string","null"],"description":"Destination URL, with Google redirect wrappers unwrapped. Null when the card links nowhere or Google exposes no destination."},"domain":{"type":["string","null"],"description":"Host of `url`."}}},"CurrencyBlock":{"type":"object","additionalProperties":false,"required":["type","position","title","url","domain","text","links","items","facts","from","to"],"properties":{"type":{"const":"currency","description":"Block type, from the closed list below. Treat a type you do not know as `other`."},"position":{"type":"integer","minimum":1,"description":"1-based position of the block on the page."},"title":{"type":["string","null"],"description":"The block's own heading as shown; for organic, ads and featured snippets, the result title."},"url":{"type":["string","null"],"description":"Primary destination: the first item URL, otherwise the first link that is not Google Search chrome; null when the block links nowhere."},"domain":{"type":["string","null"],"description":"Host of `url`; for an unresolved Google redirect, the host shown on the page."},"text":{"type":"string","description":"Everything the block shows, in reading order, at most 4,000 characters. Empty string when the block shows no text, never null."},"links":{"type":"array","items":{"$ref":"#/components/schemas/Link"},"description":"Every link the block shows, in order, deduplicated by URL, as `{url, text}`. Google links included. Never null."},"items":{"type":"array","items":{"$ref":"#/components/schemas/CurrencyItem"},"description":"The entries the block lists, typed by the block type. Never null."},"facts":{"type":"array","items":{"$ref":"#/components/schemas/Fact"},"description":"Labelled values the block shows, as `{label, value, url}` with the label in the page language. Never null."},"from":{"type":["string","null"],"description":"Source amount and currency."},"to":{"type":["string","null"],"description":"Converted amount and currency."}},"description":"Currency conversion: the `from` and `to` amounts as block fields, the rate line as facts."},"CalculatorItem":{"type":"object","additionalProperties":false,"required":["position","title","url","domain"],"properties":{"position":{"type":"integer","minimum":1,"description":"1-based rank among all items of the same block type on the page, so organic positions are the organic ranks even when the results are split across blocks."},"title":{"type":["string","null"],"description":"Title of the entry as shown."},"url":{"type":["string","null"],"description":"Destination URL, with Google redirect wrappers unwrapped. Null when the card links nowhere or Google exposes no destination."},"domain":{"type":["string","null"],"description":"Host of `url`."}}},"CalculatorBlock":{"type":"object","additionalProperties":false,"required":["type","position","title","url","domain","text","links","items","facts","expression","result"],"properties":{"type":{"const":"calculator","description":"Block type, from the closed list below. Treat a type you do not know as `other`."},"position":{"type":"integer","minimum":1,"description":"1-based position of the block on the page."},"title":{"type":["string","null"],"description":"The block's own heading as shown; for organic, ads and featured snippets, the result title."},"url":{"type":["string","null"],"description":"Primary destination: the first item URL, otherwise the first link that is not Google Search chrome; null when the block links nowhere."},"domain":{"type":["string","null"],"description":"Host of `url`; for an unresolved Google redirect, the host shown on the page."},"text":{"type":"string","description":"Everything the block shows, in reading order, at most 4,000 characters. Empty string when the block shows no text, never null."},"links":{"type":"array","items":{"$ref":"#/components/schemas/Link"},"description":"Every link the block shows, in order, deduplicated by URL, as `{url, text}`. Google links included. Never null."},"items":{"type":"array","items":{"$ref":"#/components/schemas/CalculatorItem"},"description":"The entries the block lists, typed by the block type. Never null."},"facts":{"type":"array","items":{"$ref":"#/components/schemas/Fact"},"description":"Labelled values the block shows, as `{label, value, url}` with the label in the page language. Never null."},"expression":{"type":["string","null"],"description":"Expression as shown."},"result":{"type":["string","null"],"description":"Result as shown."}},"description":"Calculator answer: `expression` and `result` as block fields."},"TimeItem":{"type":"object","additionalProperties":false,"required":["position","title","url","domain"],"properties":{"position":{"type":"integer","minimum":1,"description":"1-based rank among all items of the same block type on the page, so organic positions are the organic ranks even when the results are split across blocks."},"title":{"type":["string","null"],"description":"Title of the entry as shown."},"url":{"type":["string","null"],"description":"Destination URL, with Google redirect wrappers unwrapped. Null when the card links nowhere or Google exposes no destination."},"domain":{"type":["string","null"],"description":"Host of `url`."}}},"TimeBlock":{"type":"object","additionalProperties":false,"required":["type","position","title","url","domain","text","links","items","facts","time","date","timezone","location"],"properties":{"type":{"const":"time","description":"Block type, from the closed list below. Treat a type you do not know as `other`."},"position":{"type":"integer","minimum":1,"description":"1-based position of the block on the page."},"title":{"type":["string","null"],"description":"The block's own heading as shown; for organic, ads and featured snippets, the result title."},"url":{"type":["string","null"],"description":"Primary destination: the first item URL, otherwise the first link that is not Google Search chrome; null when the block links nowhere."},"domain":{"type":["string","null"],"description":"Host of `url`; for an unresolved Google redirect, the host shown on the page."},"text":{"type":"string","description":"Everything the block shows, in reading order, at most 4,000 characters. Empty string when the block shows no text, never null."},"links":{"type":"array","items":{"$ref":"#/components/schemas/Link"},"description":"Every link the block shows, in order, deduplicated by URL, as `{url, text}`. Google links included. Never null."},"items":{"type":"array","items":{"$ref":"#/components/schemas/TimeItem"},"description":"The entries the block lists, typed by the block type. Never null."},"facts":{"type":"array","items":{"$ref":"#/components/schemas/Fact"},"description":"Labelled values the block shows, as `{label, value, url}` with the label in the page language. Never null."},"time":{"type":["string","null"],"description":"Clock time as shown."},"date":{"type":["string","null"],"description":"Date as shown."},"timezone":{"type":["string","null"],"description":"Time zone as shown."},"location":{"type":["string","null"],"description":"Place the answer is about."}},"description":"Time or date answer for a place: `time`, `date`, `timezone` and `location` as block fields."},"FinanceItem":{"type":"object","additionalProperties":false,"required":["position","title","url","domain"],"properties":{"position":{"type":"integer","minimum":1,"description":"1-based rank among all items of the same block type on the page, so organic positions are the organic ranks even when the results are split across blocks."},"title":{"type":["string","null"],"description":"Title of the entry as shown."},"url":{"type":["string","null"],"description":"Destination URL, with Google redirect wrappers unwrapped. Null when the card links nowhere or Google exposes no destination."},"domain":{"type":["string","null"],"description":"Host of `url`."}}},"FinanceBlock":{"type":"object","additionalProperties":false,"required":["type","position","title","url","domain","text","links","items","facts"],"properties":{"type":{"const":"finance","description":"Block type, from the closed list below. Treat a type you do not know as `other`."},"position":{"type":"integer","minimum":1,"description":"1-based position of the block on the page."},"title":{"type":["string","null"],"description":"The block's own heading as shown; for organic, ads and featured snippets, the result title."},"url":{"type":["string","null"],"description":"Primary destination: the first item URL, otherwise the first link that is not Google Search chrome; null when the block links nowhere."},"domain":{"type":["string","null"],"description":"Host of `url`; for an unresolved Google redirect, the host shown on the page."},"text":{"type":"string","description":"Everything the block shows, in reading order, at most 4,000 characters. Empty string when the block shows no text, never null."},"links":{"type":"array","items":{"$ref":"#/components/schemas/Link"},"description":"Every link the block shows, in order, deduplicated by URL, as `{url, text}`. Google links included. Never null."},"items":{"type":"array","items":{"$ref":"#/components/schemas/FinanceItem"},"description":"The entries the block lists, typed by the block type. Never null."},"facts":{"type":"array","items":{"$ref":"#/components/schemas/Fact"},"description":"Labelled values the block shows, as `{label, value, url}` with the label in the page language. Never null."}},"description":"Stock or market card: quote lines as facts, linked pages as items."},"DictionaryItem":{"type":"object","additionalProperties":false,"required":["position","title","url","domain"],"properties":{"position":{"type":"integer","minimum":1,"description":"1-based rank among all items of the same block type on the page, so organic positions are the organic ranks even when the results are split across blocks."},"title":{"type":["string","null"],"description":"Title of the entry as shown."},"url":{"type":["string","null"],"description":"Destination URL, with Google redirect wrappers unwrapped. Null when the card links nowhere or Google exposes no destination."},"domain":{"type":["string","null"],"description":"Host of `url`."}}},"DictionaryBlock":{"type":"object","additionalProperties":false,"required":["type","position","title","url","domain","text","links","items","facts"],"properties":{"type":{"const":"dictionary","description":"Block type, from the closed list below. Treat a type you do not know as `other`."},"position":{"type":"integer","minimum":1,"description":"1-based position of the block on the page."},"title":{"type":["string","null"],"description":"The block's own heading as shown; for organic, ads and featured snippets, the result title."},"url":{"type":["string","null"],"description":"Primary destination: the first item URL, otherwise the first link that is not Google Search chrome; null when the block links nowhere."},"domain":{"type":["string","null"],"description":"Host of `url`; for an unresolved Google redirect, the host shown on the page."},"text":{"type":"string","description":"Everything the block shows, in reading order, at most 4,000 characters. Empty string when the block shows no text, never null."},"links":{"type":"array","items":{"$ref":"#/components/schemas/Link"},"description":"Every link the block shows, in order, deduplicated by URL, as `{url, text}`. Google links included. Never null."},"items":{"type":"array","items":{"$ref":"#/components/schemas/DictionaryItem"},"description":"The entries the block lists, typed by the block type. Never null."},"facts":{"type":"array","items":{"$ref":"#/components/schemas/Fact"},"description":"Labelled values the block shows, as `{label, value, url}` with the label in the page language. Never null."}},"description":"Dictionary card: definitions and word forms in `text` and `facts`."},"TranslateItem":{"type":"object","additionalProperties":false,"required":["position","title","url","domain"],"properties":{"position":{"type":"integer","minimum":1,"description":"1-based rank among all items of the same block type on the page, so organic positions are the organic ranks even when the results are split across blocks."},"title":{"type":["string","null"],"description":"Title of the entry as shown."},"url":{"type":["string","null"],"description":"Destination URL, with Google redirect wrappers unwrapped. Null when the card links nowhere or Google exposes no destination."},"domain":{"type":["string","null"],"description":"Host of `url`."}}},"TranslateBlock":{"type":"object","additionalProperties":false,"required":["type","position","title","url","domain","text","links","items","facts","source_language","target_language","source_text","translation"],"properties":{"type":{"const":"translate","description":"Block type, from the closed list below. Treat a type you do not know as `other`."},"position":{"type":"integer","minimum":1,"description":"1-based position of the block on the page."},"title":{"type":["string","null"],"description":"The block's own heading as shown; for organic, ads and featured snippets, the result title."},"url":{"type":["string","null"],"description":"Primary destination: the first item URL, otherwise the first link that is not Google Search chrome; null when the block links nowhere."},"domain":{"type":["string","null"],"description":"Host of `url`; for an unresolved Google redirect, the host shown on the page."},"text":{"type":"string","description":"Everything the block shows, in reading order, at most 4,000 characters. Empty string when the block shows no text, never null."},"links":{"type":"array","items":{"$ref":"#/components/schemas/Link"},"description":"Every link the block shows, in order, deduplicated by URL, as `{url, text}`. Google links included. Never null."},"items":{"type":"array","items":{"$ref":"#/components/schemas/TranslateItem"},"description":"The entries the block lists, typed by the block type. Never null."},"facts":{"type":"array","items":{"$ref":"#/components/schemas/Fact"},"description":"Labelled values the block shows, as `{label, value, url}` with the label in the page language. Never null."},"source_language":{"type":["string","null"],"description":"Detected or chosen source language."},"target_language":{"type":["string","null"],"description":"Target language."},"source_text":{"type":["string","null"],"description":"Text translated."},"translation":{"type":["string","null"],"description":"Translation shown."}},"description":"Translation card: source and target language, the text and its translation as block fields."},"FlightsItem":{"type":"object","additionalProperties":false,"required":["position","title","url","domain","departure","status"],"properties":{"position":{"type":"integer","minimum":1,"description":"1-based rank among all items of the same block type on the page, so organic positions are the organic ranks even when the results are split across blocks."},"title":{"type":["string","null"],"description":"Title of the entry as shown."},"url":{"type":["string","null"],"description":"Destination URL, with Google redirect wrappers unwrapped. Null when the card links nowhere or Google exposes no destination."},"domain":{"type":["string","null"],"description":"Host of `url`."},"departure":{"type":["string","null"],"description":"Departure time as shown."},"status":{"type":["string","null"],"description":"On place cards, the opening status word as shown (Open, Closed, Opens soon). On flight cards, the flight status."}}},"FlightsBlock":{"type":"object","additionalProperties":false,"required":["type","position","title","url","domain","text","links","items","facts"],"properties":{"type":{"const":"flights","description":"Block type, from the closed list below. Treat a type you do not know as `other`."},"position":{"type":"integer","minimum":1,"description":"1-based position of the block on the page."},"title":{"type":["string","null"],"description":"The block's own heading as shown; for organic, ads and featured snippets, the result title."},"url":{"type":["string","null"],"description":"Primary destination: the first item URL, otherwise the first link that is not Google Search chrome; null when the block links nowhere."},"domain":{"type":["string","null"],"description":"Host of `url`; for an unresolved Google redirect, the host shown on the page."},"text":{"type":"string","description":"Everything the block shows, in reading order, at most 4,000 characters. Empty string when the block shows no text, never null."},"links":{"type":"array","items":{"$ref":"#/components/schemas/Link"},"description":"Every link the block shows, in order, deduplicated by URL, as `{url, text}`. Google links included. Never null."},"items":{"type":"array","items":{"$ref":"#/components/schemas/FlightsItem"},"description":"The entries the block lists, typed by the block type. Never null."},"facts":{"type":"array","items":{"$ref":"#/components/schemas/Fact"},"description":"Labelled values the block shows, as `{label, value, url}` with the label in the page language. Never null."}},"description":"Flight status or flight results: one item per flight with `departure` and `status`."},"SportsItem":{"type":"object","additionalProperties":false,"required":["position","title","url","domain"],"properties":{"position":{"type":"integer","minimum":1,"description":"1-based rank among all items of the same block type on the page, so organic positions are the organic ranks even when the results are split across blocks."},"title":{"type":["string","null"],"description":"Title of the entry as shown."},"url":{"type":["string","null"],"description":"Destination URL, with Google redirect wrappers unwrapped. Null when the card links nowhere or Google exposes no destination."},"domain":{"type":["string","null"],"description":"Host of `url`."}}},"SportsBlock":{"type":"object","additionalProperties":false,"required":["type","position","title","url","domain","text","links","items","facts"],"properties":{"type":{"const":"sports","description":"Block type, from the closed list below. Treat a type you do not know as `other`."},"position":{"type":"integer","minimum":1,"description":"1-based position of the block on the page."},"title":{"type":["string","null"],"description":"The block's own heading as shown; for organic, ads and featured snippets, the result title."},"url":{"type":["string","null"],"description":"Primary destination: the first item URL, otherwise the first link that is not Google Search chrome; null when the block links nowhere."},"domain":{"type":["string","null"],"description":"Host of `url`; for an unresolved Google redirect, the host shown on the page."},"text":{"type":"string","description":"Everything the block shows, in reading order, at most 4,000 characters. Empty string when the block shows no text, never null."},"links":{"type":"array","items":{"$ref":"#/components/schemas/Link"},"description":"Every link the block shows, in order, deduplicated by URL, as `{url, text}`. Google links included. Never null."},"items":{"type":"array","items":{"$ref":"#/components/schemas/SportsItem"},"description":"The entries the block lists, typed by the block type. Never null."},"facts":{"type":"array","items":{"$ref":"#/components/schemas/Fact"},"description":"Labelled values the block shows, as `{label, value, url}` with the label in the page language. Never null."}},"description":"Sports scores or fixtures as shown, in `text` and `facts`."},"NavigationItem":{"type":"object","additionalProperties":false,"required":["position","title","url","domain"],"properties":{"position":{"type":"integer","minimum":1,"description":"1-based rank among all items of the same block type on the page, so organic positions are the organic ranks even when the results are split across blocks."},"title":{"type":["string","null"],"description":"Title of the entry as shown."},"url":{"type":["string","null"],"description":"Destination URL, with Google redirect wrappers unwrapped. Null when the card links nowhere or Google exposes no destination."},"domain":{"type":["string","null"],"description":"Host of `url`."}}},"NavigationBlock":{"type":"object","additionalProperties":false,"required":["type","position","title","url","domain","text","links","items","facts"],"properties":{"type":{"const":"navigation","description":"Block type, from the closed list below. Treat a type you do not know as `other`."},"position":{"type":"integer","minimum":1,"description":"1-based position of the block on the page."},"title":{"type":["string","null"],"description":"The block's own heading as shown; for organic, ads and featured snippets, the result title."},"url":{"type":["string","null"],"description":"Primary destination: the first item URL, otherwise the first link that is not Google Search chrome; null when the block links nowhere."},"domain":{"type":["string","null"],"description":"Host of `url`; for an unresolved Google redirect, the host shown on the page."},"text":{"type":"string","description":"Everything the block shows, in reading order, at most 4,000 characters. Empty string when the block shows no text, never null."},"links":{"type":"array","items":{"$ref":"#/components/schemas/Link"},"description":"Every link the block shows, in order, deduplicated by URL, as `{url, text}`. Google links included. Never null."},"items":{"type":"array","items":{"$ref":"#/components/schemas/NavigationItem"},"description":"The entries the block lists, typed by the block type. Never null."},"facts":{"type":"array","items":{"$ref":"#/components/schemas/Fact"},"description":"Labelled values the block shows, as `{label, value, url}` with the label in the page language. Never null."}},"description":"Google Search chrome: header, tabs, filter chips, page navigation. Items link to Google searches."},"NoticeItem":{"type":"object","additionalProperties":false,"required":["position","title","url","domain"],"properties":{"position":{"type":"integer","minimum":1,"description":"1-based rank among all items of the same block type on the page, so organic positions are the organic ranks even when the results are split across blocks."},"title":{"type":["string","null"],"description":"Title of the entry as shown."},"url":{"type":["string","null"],"description":"Destination URL, with Google redirect wrappers unwrapped. Null when the card links nowhere or Google exposes no destination."},"domain":{"type":["string","null"],"description":"Host of `url`."}}},"NoticeBlock":{"type":"object","additionalProperties":false,"required":["type","position","title","url","domain","text","links","items","facts"],"properties":{"type":{"const":"notice","description":"Block type, from the closed list below. Treat a type you do not know as `other`."},"position":{"type":"integer","minimum":1,"description":"1-based position of the block on the page."},"title":{"type":["string","null"],"description":"The block's own heading as shown; for organic, ads and featured snippets, the result title."},"url":{"type":["string","null"],"description":"Primary destination: the first item URL, otherwise the first link that is not Google Search chrome; null when the block links nowhere."},"domain":{"type":["string","null"],"description":"Host of `url`; for an unresolved Google redirect, the host shown on the page."},"text":{"type":"string","description":"Everything the block shows, in reading order, at most 4,000 characters. Empty string when the block shows no text, never null."},"links":{"type":"array","items":{"$ref":"#/components/schemas/Link"},"description":"Every link the block shows, in order, deduplicated by URL, as `{url, text}`. Google links included. Never null."},"items":{"type":"array","items":{"$ref":"#/components/schemas/NoticeItem"},"description":"The entries the block lists, typed by the block type. Never null."},"facts":{"type":"array","items":{"$ref":"#/components/schemas/Fact"},"description":"Labelled values the block shows, as `{label, value, url}` with the label in the page language. Never null."}},"description":"A notice Google shows, such as the location banner or a no-results message."},"ConsentItem":{"type":"object","additionalProperties":false,"required":["position","title","url","domain"],"properties":{"position":{"type":"integer","minimum":1,"description":"1-based rank among all items of the same block type on the page, so organic positions are the organic ranks even when the results are split across blocks."},"title":{"type":["string","null"],"description":"Title of the entry as shown."},"url":{"type":["string","null"],"description":"Destination URL, with Google redirect wrappers unwrapped. Null when the card links nowhere or Google exposes no destination."},"domain":{"type":["string","null"],"description":"Host of `url`."}}},"ConsentBlock":{"type":"object","additionalProperties":false,"required":["type","position","title","url","domain","text","links","items","facts"],"properties":{"type":{"const":"consent","description":"Block type, from the closed list below. Treat a type you do not know as `other`."},"position":{"type":"integer","minimum":1,"description":"1-based position of the block on the page."},"title":{"type":["string","null"],"description":"The block's own heading as shown; for organic, ads and featured snippets, the result title."},"url":{"type":["string","null"],"description":"Primary destination: the first item URL, otherwise the first link that is not Google Search chrome; null when the block links nowhere."},"domain":{"type":["string","null"],"description":"Host of `url`; for an unresolved Google redirect, the host shown on the page."},"text":{"type":"string","description":"Everything the block shows, in reading order, at most 4,000 characters. Empty string when the block shows no text, never null."},"links":{"type":"array","items":{"$ref":"#/components/schemas/Link"},"description":"Every link the block shows, in order, deduplicated by URL, as `{url, text}`. Google links included. Never null."},"items":{"type":"array","items":{"$ref":"#/components/schemas/ConsentItem"},"description":"The entries the block lists, typed by the block type. Never null."},"facts":{"type":"array","items":{"$ref":"#/components/schemas/Fact"},"description":"Labelled values the block shows, as `{label, value, url}` with the label in the page language. Never null."}},"description":"A consent dialog drawn over the page."},"OtherItem":{"type":"object","additionalProperties":false,"required":["position","title","url","domain"],"properties":{"position":{"type":"integer","minimum":1,"description":"1-based rank among all items of the same block type on the page, so organic positions are the organic ranks even when the results are split across blocks."},"title":{"type":["string","null"],"description":"Title of the entry as shown."},"url":{"type":["string","null"],"description":"Destination URL, with Google redirect wrappers unwrapped. Null when the card links nowhere or Google exposes no destination."},"domain":{"type":["string","null"],"description":"Host of `url`."}}},"OtherBlock":{"type":"object","additionalProperties":false,"required":["type","position","title","url","domain","text","links","items","facts"],"properties":{"type":{"const":"other","description":"Block type, from the closed list below. Treat a type you do not know as `other`."},"position":{"type":"integer","minimum":1,"description":"1-based position of the block on the page."},"title":{"type":["string","null"],"description":"The block's own heading as shown; for organic, ads and featured snippets, the result title."},"url":{"type":["string","null"],"description":"Primary destination: the first item URL, otherwise the first link that is not Google Search chrome; null when the block links nowhere."},"domain":{"type":["string","null"],"description":"Host of `url`; for an unresolved Google redirect, the host shown on the page."},"text":{"type":"string","description":"Everything the block shows, in reading order, at most 4,000 characters. Empty string when the block shows no text, never null."},"links":{"type":"array","items":{"$ref":"#/components/schemas/Link"},"description":"Every link the block shows, in order, deduplicated by URL, as `{url, text}`. Google links included. Never null."},"items":{"type":"array","items":{"$ref":"#/components/schemas/OtherItem"},"description":"The entries the block lists, typed by the block type. Never null."},"facts":{"type":"array","items":{"$ref":"#/components/schemas/Fact"},"description":"Labelled values the block shows, as `{label, value, url}` with the label in the page language. Never null."}},"description":"A module the parser does not recognise: the base fields plus one item per destination it offers. Never dropped."},"StructuredResponse":{"type":"object","additionalProperties":false,"required":["ok","request","page","blocks","pagination","billed","billing_source"],"properties":{"ok":{"const":true},"request":{"$ref":"#/components/schemas/Request"},"page":{"$ref":"#/components/schemas/Page"},"blocks":{"type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/OrganicBlock"},{"$ref":"#/components/schemas/FeaturedSnippetBlock"},{"$ref":"#/components/schemas/AdsBlock"},{"$ref":"#/components/schemas/ShoppingBlock"},{"$ref":"#/components/schemas/LocalBlock"},{"$ref":"#/components/schemas/HotelsBlock"},{"$ref":"#/components/schemas/ImagesBlock"},{"$ref":"#/components/schemas/VideosBlock"},{"$ref":"#/components/schemas/NewsBlock"},{"$ref":"#/components/schemas/KnowledgeBlock"},{"$ref":"#/components/schemas/ProfilesBlock"},{"$ref":"#/components/schemas/AiOverviewBlock"},{"$ref":"#/components/schemas/PeopleAlsoAskBlock"},{"$ref":"#/components/schemas/ThingsToKnowBlock"},{"$ref":"#/components/schemas/RelatedSearchesBlock"},{"$ref":"#/components/schemas/DiscussionsBlock"},{"$ref":"#/components/schemas/RecipesBlock"},{"$ref":"#/components/schemas/JobsBlock"},{"$ref":"#/components/schemas/WebsitesBlock"},{"$ref":"#/components/schemas/AppsBlock"},{"$ref":"#/components/schemas/WeatherBlock"},{"$ref":"#/components/schemas/CurrencyBlock"},{"$ref":"#/components/schemas/CalculatorBlock"},{"$ref":"#/components/schemas/TimeBlock"},{"$ref":"#/components/schemas/FinanceBlock"},{"$ref":"#/components/schemas/DictionaryBlock"},{"$ref":"#/components/schemas/TranslateBlock"},{"$ref":"#/components/schemas/FlightsBlock"},{"$ref":"#/components/schemas/SportsBlock"},{"$ref":"#/components/schemas/NavigationBlock"},{"$ref":"#/components/schemas/NoticeBlock"},{"$ref":"#/components/schemas/ConsentBlock"},{"$ref":"#/components/schemas/OtherBlock"}]},"description":"The page as blocks in page order. Every rendered link and text of the page belongs to exactly one block."},"pagination":{"$ref":"#/components/schemas/StructuredPagination"},"billed":{"type":"boolean"},"billing_source":{"$ref":"#/components/schemas/BillingSource"}}}}}}