From a01feee66336d687a43f7413a2cbca18686bcb03 Mon Sep 17 00:00:00 2001 From: Robert Helewka Date: Tue, 26 May 2026 21:45:17 -0400 Subject: [PATCH] chore(ansible): update vault credentials --- ansible/inventory/group_vars/all/vault.yml | 948 +++---- .../group_vars/all/vault.yml.example | 1 + ansible/inventory/host_vars/miranda.incus.yml | 1 + .../inventory/host_vars/rosalind.incus.yml | 1 + ansible/searxng/searxng-settings.yml.j2 | 39 +- docs/brave_search_api.md | 2419 +++++++++++++++++ docs/searxng.md | 284 ++ 7 files changed, 3213 insertions(+), 480 deletions(-) create mode 100644 docs/brave_search_api.md create mode 100644 docs/searxng.md diff --git a/ansible/inventory/group_vars/all/vault.yml b/ansible/inventory/group_vars/all/vault.yml index 710cb5b..14018bb 100644 --- a/ansible/inventory/group_vars/all/vault.yml +++ b/ansible/inventory/group_vars/all/vault.yml @@ -1,474 +1,476 @@ $ANSIBLE_VAULT;1.1;AES256 -39306338336433326261653336326638353132626532393335326631633936616235666462613536 -3663663237656630363262636133346133363335353366300a396337613165313864343639396239 -31323565643835353462653534386662366330656366376131393162393933336332653531653165 -3830643864663961370a633661393663306464303961323764383938666165643237396364643439 -61323031316232303235656531626438396162386163653866356535353836653238613337313565 -38356563383561626437373965343634356563316639303536313736313263353166643662323831 -66343530663631633833313333316239373764373839626231306436313764353139313733613930 -65303339393564653163613139366366313762373561393938376662633865653533623833663264 -37663234303537373136346461656632666333616566663330623536336433333162626138303662 -30643531306163366462303732356231313230316166313135373630386163396433616634646261 -64653930343366656531316663363830653965653039643038343936353962623439653138313632 -64626435363565393930613831316331663166626231356432336339646163373466326530626266 -37653933366133626264343865313139633831316139663731623863383130613032313738306464 -63346632313838363733376261626430613161306364383762376136343536333666396565643937 -30623331636166326631616639316438646131613766366263393031626562333036323733383737 -37383131653663333232613263333836636633346232616430343833316366363236323833353339 -66653365313230643936336166343231636265356638363832396266616162313135636534393137 -65336166633235653337303938666432353538643237306464373138343066636566613164386462 -65613830346162383030353761366639623832666539643665363933343036626236343437313733 -63333336333037656138616532396363313666663239373264373065306432363731303434323635 -63356637316239666337616463633537366361636430373061346338666433633938666530336664 -61323034623966323663383530313838386431323433636431666530396337666130303636666636 -35666163366563616563303630613837393930366166653066316361336566303334306165303866 -38353762353136386564656162353234353733383866636138363432383631373936383935346630 -61666638366136623038663665383534316565663536333133363535346461346139663132633065 -65323165643565353138616261393566313466353933653033313232656265356262313834643033 -64376233636565366334613466636332333064336464656466376137343665353431313161636237 -65326435633235366465346564636439316264353637663766323735343830623830626631373365 -35633136626238633731386266373238323165363737633235623763366430666434653134366236 -62626162306465313339396461373231626233306236323137633362326538626331666532306637 -65383533316562663436353436643763626664313039386363626566613061373365623937643264 -61366634333136616233343462313331666635646262306433373638616137343534303366313761 -39393030616434373434393064336663633166393366353031326230346265643336626466306662 -33323834666663323763363864613264303061393231663262346439633134356363633731353332 -61623362353738323130393564626266396365356638343164633933653331323938313634343037 -66346334393837343738653865616134633062396637393733633537396665616638316264393431 -65356337376234633634366365326530623536303034326537306634663730383039373338313835 -62373065353133396632663536366664353331303833313463383133663563393362303265333639 -62333935356361303864623331613239646439356665633261646664393136373133363665346637 -62373163663465393535636530363535386465313464326266373636356138643238353536373830 -39356531343131646338313833376138343537666137616132663136366233313064653564393161 -31626666653437366231656130333066323363623732653766353365363838343930613138326663 -66393864646339373065626235356132306135353137323334626461313935666138623431396132 -31353235343938636261666439393465616165306633343838366465353832306238666539366230 -36386364393933616231383366623234653738373361383031623733326432373531376662316164 -34623639393464316332376466393537396332626561663338656538383839393961373436383331 -31623435383564363637663135376334363032623630616533393835393632343533326339633137 -36343065326239393661353637653436663531653538343436383734343634626130323965626666 -36623334393265353134383666636463376131633231353438313563346462646635333061353634 -39343365363936376362626331663966653137356537383735386332663138343732656663616364 -37663639383934336163336636383431333439303735333239366630336162326565313330653439 -62613963343561343931313133636362333863616638643135376663613963333230313437396531 -62643432653230303834353236666236356262643637623932343964316666386332363635313265 -62623634623161623030313262386266393532333236666565313131323036633033373666383466 -36663864616262633663656438396439356163613738366136636365666564383131376361356661 -64656430616664343737613834396239613039613362613835626336336665353535333038383039 -64346330336333616134623665646239363366343038663062666464336134363066363939383365 -39333232636132663266613530316532363861353038306331393638323538383237363965643862 -64626638356532663463373633316130393835366332633565363664383839376365646238663330 -36653061633734643539633236633661613663333333333835356130373239663566373535653035 -32363265616232323262353361643536363231646237313431323664326331663439333631663765 -62643466373264383865643033383533666136346561633230653334353036643438386333366635 -39346133636266613932363634613066373665363963656465396332616638383766633862303965 -32633139323064353534323765333234346461313239386638613137393230383730633838653738 -65373931383661636635393032633566353663653764633130303731363733653130366135383462 -64326333323664316638396231636434663763633130383634663664633635663662313266643831 -34633233653634336136303938386463663338333933356436626132323664386533643265313962 -62373935363739666137333766303661643431333038343638303835376261336335343433313564 -63373933666262343935393565366166633034666665393034376465353438303132306563333863 -62376238333035613261366666363430643137346632663465363135383433636566313862373663 -38633963613039396335636263323865386332323338393135386565626635326431366632376365 -34643964373136653461666435393538326534353732303861623165333666373139643466313262 -35646633666537366264373666383163336138303265646137646336376663663633323833336634 -36366136356138636436333662343766393337623237626665346138633030353763376537656262 -62653263373337313732393065616535623230316664616633363732663131396138383539366135 -61343838306564356339613063396661366133396662323361636265613230346463363033646663 -30306530393932383732626533366432636461326265656334373738643933363762643762376637 -32393034393637363830336466376663643630316330643566373162373831633537306266333163 -62373861666262343135396165626537373064333365326164393732656233373631656130663564 -31386237623236393465343638363964636539653965363030393232386565643065613332346232 -32306465336561653862333131633339343465373565353433383564326232366431376566636661 -39396339386238643334313639663132623739313930363039616264393938323866303333383365 -63643466313236383864323364613132363966666230636534363639386262636664626163653161 -61383233393132633862376566336235323363396531313837633233376330643432393961613131 -65353465616331623862336665343638663639396361393839626363343532643138393066646430 -34343632336537393534393338373832373238663032623166396564383139393233373734373037 -32376335636238636262326265303933353061333639323936346639316437613032386531326131 -37653762326432643130313930383165356437323539316634343330653430626231383165373437 -31643461303834633037633233383434386366326431323630316262363030633535376561643365 -35316164376331636561663161663236343130386165343430333365613364313937393832616530 -39643762333435323065396139356639363935613432653364356562653562626164326233393035 -65383634346365343362616664313538383538643065363735363165656334356261363665303464 -65313334313535626333326665336466306438363635343539376233316661336439323133343731 -36613638343463363566393061663835636436363434386534386536306139663833656263313138 -37323063656135633130373539373764653662663830623637336365343064333232303263373830 -38333261626430633438363633313539313231363966393739663161663366623964366165353164 -38646637616635343237653762383132366565333238373439373464343534303639363538636631 -66653663376435396664343231663938366333613131336434343032396464353532663838343162 -34303131393262373462386161643432646234376337616435373439633864303739333263363630 -65633066303531633434666539373736613630666430313464393766356531613165643066376261 -35373837636131373935333037373732383666656431613735643765636161386234376263373937 -39396534623433376365336336646236333533643330323330356561393331346462373833396338 -62363163303765613136353034623534396531366534333061396662383636663131643735653133 -35376231666530326635653931346134636336353334343436313632346431396562383339653261 -31373132343461363064666333353066653136653864343361613132363337363338376433616431 -38646230376636303231376531393737643436303866326635616530306535663130316565626561 -61363036656235613966326332333136386430323732343465633165353765346661346130386338 -62363932613839343537363462303032616563336230383035633735376233343832613063663165 -31393961306437623037386335643830333134383162363831333734626366353430353233343931 -31396536376161656136363039386362376161643832306263623737373863623664633032356634 -36626431323832356330643931623530366231626239633138363661313231383734666438383166 -38363632356232323362323263373330373031643866373737313732343366326531336134376439 -31346237633439663161636536633361663830646533643862383964313736356161363761356563 -30396130636561656238643032636166616364623539333233646464353364313066636132326563 -36643830313666303431333766303962633138656136323637616335333230346330363231633562 -30303365646235623738383038313062663237323634323364386366353661333661346464666631 -34353132376635306231363730623932666231366335366366343761303532376633353464663961 -30383836396461313264333735643361346631386166613035353661623364383933656165613861 -64316161386662616361376234653634613835653536393138366133336466386363303539356335 -37303438376336653233373631383061393262346234373663616536373235396637306162316433 -66323863626239336130316138323363363033353239336465303563363766386565643830353865 -36646464303635316137376538353435663334613466356663336462613466663466333632636436 -33393537383961323634373235383034303665616137633861666261306631656330616637336532 -66653565663263613762373937633238306164356637316139656538316462663934663663366230 -63373966656431623831383431613866363265333262323462643431313931623631636664626265 -32393263366466653432323064316532303936346466343830323231306633663330303236363865 -38346531613439396336633838653238386437613739373263356238323136386434613932353164 -35353638653931363866653462383738326335396265653637626133313238663538613263393636 -66333265323332323562363665313738656638643565336439643137383837386534633866636565 -33656661363163613133363633656539356363383666383237383433303239326361366231623132 -36666537623062353831336633613762633061343862323964663866316635346533663735346535 -66643866363833633030313961363063633764363065656631363764653736333737303637643238 -33643862306332336335303364306362636235396635633339326131663966316532613032396164 -36366633363463323263373830386266323565643465343564653436666430313362323463326238 -34653663626436633833326164626162383066306562333734336466623431643463363365623535 -34613333623861383365616635666138653733306263363838316634663162613961373266643139 -39656436653563643930646531383636323364353239323038613462363337386637613762336234 -63663037616465666131643431393663373533396136366131326562633061636663373965646437 -62626562666566626638646535363163643239363834313034323362313132383038343464613133 -39383461643933653037346163333666366130383031333935326266343736333232353531393032 -61643263336434383835346666653437626266323961333131383039663336633630333930343266 -65376236653431333832626135303966323362323236306366356266373034336632373262663461 -39323761393930643465663238656437333030333038636363313337323739333238373030303661 -31633766626165323532386464633164313465306336616634353265636661313039663164306338 -34623061303637353831643265336462663532363634343164643463336637613534376465336538 -37313563393933646166633861656431326436363166626132626437373566346639616161643533 -33306339626365666436306330323231356164323336643062353061386637386635333230303665 -31666130343132356565383431643039393934333539343363343366306132386233356432323837 -66373866333361653231383061336130356130323637356264653032303030376634653332316235 -35353839663966343033643361643261313331316139636362383234316565303164303765623835 -38396136613964623839643761306666663634313063323539653635623033616435623934613462 -32613661393164623762396534306230343962353566343933396334366134396563653930666336 -35363562383636303261623032626136356132626662376136383033656666353039626334653736 -37333761366530383466366139653330643961323163616432613033353234666365373531336332 -33316363653830363637386161346438636464616132633535336564363262333461653964656238 -34363865643438646437343134323362653264396132663132346462643132623335643232346535 -61343636643131646538363432613731666430333666643830373862613966323233643635666237 -31356137303239633465333139343765366666613264343639356630353536313833316265333238 -64393762616533663362653434303264393964326132643361643832326439623332646661616261 -36323262376161656239363639623365346230363162383533343263393564313130306534316134 -62646564306639383932653637613839393365343061333031616132393734643762643933323531 -31663730326234393332616439653364346138373134326439633464366139626134356636373463 -62316233626132653861356332376232643137356362343364303562333435356434303963343837 -37353536336534383465303637396363663763363738313630656439653564346131336464326536 -34353934666232343331383365333431363364363361366662353037396233356562623736633032 -34653638373263626563393033313637613065373132383564393136616264373430313533666266 -63363336363534333965353638316165613230663162633962666264643538346162663263386131 -61643263663037633036633731376262346661663930366336626261316230363336303763633666 -33643061633335353032636631333031373433326336386463633838363939643636333539613632 -37333137623538333134363038666331333130646139643635323062623433616534313539343866 -32393239333365366237656566353366303938393638356634653231616161356237326465306139 -31383066396661646362313064363664303636383163623134386432626330346165613939613439 -37646338393637633432333830653532313931373139313432646630663161313837616234613530 -37313033363637363332656264366561663033646337383437313461333965396461313436663564 -62356334636530346437616537336562616562333264343830373132633030663131326534396634 -64653236626161656632333865323438653765623562643235386361646262616237336339323731 -39396666636337356662356433623663623436353433613061383335316533636233313164653762 -66656466346463313233343865363139333736326530653438363731633236623866323362323235 -36346633343639366436396662363461613030633934626166666364336266633835643738393935 -38393632373963363065343733313963313662303463373966623865396566316231363731336135 -38373133613639653365333138623638313465343937363633613939643338366436613336373431 -62626133376662333037626236313736363739346430323461303438316236363533353339623230 -36303330373262643439663635393530393365326239646533373365663161366164376166366336 -62333933643630363561386164366436663434653062396237306161626261373561393733653063 -62333438383237643134393938396632346234393937643436366461313334343236396362363936 -37636235343534336136626134613839363537373262313138653331323633316464376662333666 -63633832326261666366383261336334393263373836373833386262626639646339613865333664 -38666331353730363163623637653765306234363464353431653832353035306535383435653837 -65346562623637323662356465393934636337326565386536663065356165316339663536633638 -31383864346361636363346232666162303538653262663230346333393438303237656633366135 -61666666393539356438666662363363393461333135336538356564623135623262613832363139 -37363337343931303736376337613865343937373237306565326466613236626430313065333262 -37623835373038613733366238326431346465643364613633623338373165326466666265336138 -64333531396363643438353266623534353639303237396262343939386437386134373561666639 -61313563633938363062633363396436323366343065343263656337663264633131353631623336 -64636133373663646466663338343638393737663961386337356138663131653366323861333235 -63323761356664303235306138383831623762363032346331623034373535366235653330636539 -38376362336630623166616130333838626430343134333330306631663130323466343036643866 -31663731303530346338396334336631326138646361613639303933333233333038613462343563 -30343061383161363433333063393230313164383433646466626537343336323335383666346337 -38386562343233666330653632616435316137326563356439366266363431666339383039376664 -38316462623061323737343736633133626438333737643532653831313164313335396562373333 -39626332633731343233396430653566376431363937633535666136633134613965623466316233 -33386665323631306666653537626233656137613365623062353138336231643238613031636361 -35336661306135316561653261383961393865306237663935326232303637613164326235383661 -63353434393239303932316466333730313738383265346132303861333832383536366465623066 -62636636303562333038393632653461343735666666383538323061383962363761383436316165 -62626133333161313963386361643032396364613731323466316236643538363039393965313839 -38623062623461663962356239353235326565646636306166313562643737326633373835346231 -63383366366463343932306631303334363639326263616334643665343465326235366562336436 -34306138616132346533383566313030363766643862303938333731353238383137646331326338 -63633032626664373333343534616539313033313838346631323733396538393435316338373035 -62313863343233613566336539336662613639393439666566323936656364653236636364353062 -62613936623162613539663833653735306133666133356330633439353637613330623630663139 -30646239316266656137643834356662646336626339626466353338383061333531633666356131 -61353936666538623133643939393063626463376232323932643432653738636132626362613635 -32366230623332396361373761336664316131383266353136366664383633393137363836393139 -33653138666461626463663964343237303836313037326633633961613135383464643738633539 -64646330636637366637313638356630316635333030613733663836386638343966303761313962 -32386335323438323461393562653233636238313663646362313165363064386637613064366333 -32363761653665303031316263613539313137643234326162366331623566306463353134333563 -35303832313562326634313733393833303439393661646434346638346332373935613765626436 -66653964323733666630316133346364303337376635376638663365626435643764386466373836 -35633930633930353536306436343461636230326462616265363035333438393066666562373862 -64333830636666356533373139656565643539346535326630333635303539613935636564366138 -30613634646366303637633836646138336638313162383530653632663933653235373838666430 -30353839653561383564386538626634363438346162333331373764346133303563346364656631 -34613362333365326461653930356465306338373638333064366630616437366132323464333935 -65393337636334353865343239313230663065353139313666363032643064366335663363306165 -38303637303638323561376562613034616566653637363964663430633062313664643438346537 -62643930303565646238643664313135623532666637396263656330376363633132353634643565 -34616162633135616134636264346366653066663535613063653961643538353666313761353030 -37346536376534353433656535363632373065656135626161373333316637656333653466336239 -63393338656561396365306532396237323633323230373865346439366637393138646134646562 -32333331326135616433333333393631323330366664373134333065383063373736363236333937 -65323334333232336235366339323730316662303236656436626237663533333438346334343065 -32363961363363366239666538376131653462666334643061356230366563623937376635363339 -63363564623933646363343065396263643634613534353164613134653934643765613933663361 -30663861326131366539323835633937313131396638376332646665623339643266343963306232 -39363566656163633561343765366139616364353763366337306339633437626365333831346133 -36313734653336613266393238343665613461323362393139633865373863313038653335656464 -32363063356634363036636664623031353466376533333038323532303232343534373435383637 -62373231373037663235653436613062383666333539343534356634386332653136343931623463 -37306234393763636161356561366366373266633938626665613633303666356137356138393236 -36353866303462646236316330363664313133313037306633376637656561656566343934373865 -65353839386562306263663037373836343464316366363930316662383462323366626532656131 -34323466393932326536356135653530666262323363333363306232316330313966356232313632 -35356333343462666562613461336565366262396436323338363238303565303063626530346561 -66653161636262303265386133616136656431613064326666346239323337336531353733333630 -32626266323031363139313635316263366531383066653766626662316437376534333664633665 -32633736373434393732396562376332653239663664633230653933633666393539373132373031 -63323866343336346135323835373837653339353239323034316232663839383635623934376630 -62376263386664383934343639363236323666373866353132326232346131353632663261616439 -61616462633163663463316564396362383335653934303365346462303832343962323637663365 -63383637313837343338333731383530343761363430343932613733376561653237653261396335 -61373832316433643137656262313631656563656539363832313162303636386632303332633737 -36306337353231346165653230333232383761646565663334393865663361613436663230316235 -32393765386565346461623662313334373763653630616230396431613564396162623332386565 -63373562323463633633366366343831376437653235313334616133666434393435613362653264 -34643430626239313537386237613965303838636366343832333666306561633465383935313435 -34616334303135396565613964633837653164356535656162663731383034373764343939643662 -63616631346530366130656363633763353533653166633763316334653335633139656139333166 -65366335616537656433373634303338373963396633376539366466396665356465313266353263 -37303934626435373733363336373065663561343139643366613664333032323763636136656234 -39653831313735626365643538306664306562376635313730646363373763633438653566343731 -30613939653363626464323131326163336565653433633431393334666165636337663336373732 -39333932613634353132663730313961326330326466663430656136656462663563323565643630 -34393963626161643539663863623637323736303963663039393761623037306330366334316264 -32373831643835383662326461393032626162616664353432616464303732633261623162613066 -34316166613861616532626166353561653431663438346663353536653236393461383465353962 -62313435653638376461313563346335383664643566343833366138663166333034326563633664 -63333635383661376234393663613964626430393562636462376666323933376162303736623462 -36663962643364616466623964633133616266643261373464343431313161366332343533343165 -33636361663133323866383165343365353030613135366430646536343966336431356664633565 -65313035613661613134643166336237316363396561666461656361393366323534633261633461 -66656231663337653863363063356637373539353337383834353361356538313462363931306334 -66623366613033353466643436393832393039356235366364303434363936326638386161643239 -66643865363465356435623464373838646430623536376330333339623030643734623263613133 -31313763386533333761353737613137636234663030353939636433376363313566303832656432 -37656338373965343832386436333766376630393264623833343163656137653562313731326538 -39666332653533396436333434363864323162613934393466303137366264613766396131333432 -37633362623665386535333232366333666638366164306538626239353536333636316630343064 -64313132313839316263336663313262373234303335306263326439613537333461386232363266 -37363066623561343431616433613439613931383861633032653865383031626466386630653138 -30633736386431376237663338613935383932376132326130646434333536656537663831616233 -36303730663235383534616136343339363739643666346563613537343132663766626131333831 -30386434656232333465643238323838373132636637383163383438373037626264346332663562 -36656336666431363161356130313039376166613163346332393562623766376661613131393036 -62366561666662303563623963393162313434363265633332336434663334393131373337303736 -61383738653030633830663631376264346363356137313465653830633130393337363137633734 -35303535313965633033373335313733376635343463303030343534653832343833323536396361 -30643732303463613035613565653639363066643038336634653265666339313365323436343363 -35373635383865623865376166363331336333303033343466396139636238646239333335343762 -39616334353264383835376334333361646234373463336463643539616633396535656465316332 -62333635316565356536636539626363383331633238333838366266363939626331626337316364 -33326264623738333465613236346333626366313537663633353833663533366431386539663665 -37653763656237356562313662336163323765343839613135306636393139323463393831646138 -34346666393165343930313236633462326235336536363830633733333363376563363836653661 -38636362376530303465383830356666353930346265313833326330356661653764363935393038 -31343433356439373134636131396561303132356166353133383364363365373830363539653132 -62346632633564303366356262396266313931613630613338633262656434373366323130316338 -31303963653535323834646538646339306338616533666333313833643034613639643238626564 -66303633346635343865353739323233643139316262343162396530336566333335626562323362 -39323235646633323430376630313534343137313433643234643561643230613262396361376433 -34356231396562643732643239303531326334613135613866316463366564333366623530616133 -63376433303737613332303335366231303932356462306363363234376230613730313464326361 -36396632613566613632636363323364343063616339663263363263633933366638316637323762 -63323733376165663365303061646631333535653165336166313534663539386632336532356436 -36343935313064363737303461356464633437333632376633313832663130373766623331316131 -37343431313835353239633530623463333333633233663634366665336265633865643337633166 -35383935633337633636343032303835396537366234666335343235333433376265326237323230 -32343832383462333164646564613566313365643035633337313839633339626262383837303231 -36343431356233636262303436643065316239656137376366363563336262343338383930353663 -30303332633231363233356238373531396362303962623561323931346163653132623065656131 -34386333333030363132663735366132306561313566326433393831356364386261626331633538 -61613866396661376435363937316163613835383536366535373537333865303666353637313036 -37386666666435336362356366393039626232323638653536396466663437666430316538366230 -33626365316139646434313238313461626239643134366563383566656264383434363430373632 -38663436346634366233353634373539376238343535373532323831346530613334633366333633 -34346637653565363136633535353730343932353134356536613836346332383534336133303635 -39626632333638393137393664343063646464643661303239643963656666396261313339663033 -61646163663762306666306666396638316434613631393830373934346436613163343561613635 -30653961626635366130356131396535303161666231663530636464333038323030643836643433 -31623730363734626337323361303734323232333336646330343230613735643037346239336634 -63313830353032376334633137346465346338343933613030323262333535333630376162356636 -61303032316336366466373164653036333833323166373333616163343966316632323066653762 -31386465666435386634383162613037343966666330646261613231656130636332393061663933 -63326532313263353865306532333837653362303738646337653235663436353164333633656235 -30643430633139393363633031313462373532346237393337396630626164653233616562356530 -33313637663739363163346635643163333165393531633937306636626631333066656133346137 -38326334383835383866386466353961383862303233653232643263343530336332356335313031 -64663164643061366463346234666663643131303465636439313738353039343366333038376135 -36323863326534306564666464353830653731633836623730333863636336376632613732333064 -62363235663765663534383731613830646532346365343461366163366234376432323961303064 -31363130373431383261663235373963386435633663653737623736363166623136363861323633 -32306431633361386534333535623261366134313466336534653433303639303363306562636132 -34376438303033373963633130353639653332336632646563656336376134656162653662393134 -36613634616532383263373030366464383464313834383536623937393736643730353063633461 -30313138316135336161626265386437326364326664366562613461353234393436643035623639 -31663230646335633037663266633735326264303761313038363238313539383037623232663661 -36393935336232316132656238626335356161646564353733646566616561663030663666393363 -34653564623730356463353766633362353365363964303461656464663237306234313530306334 -35656539666231313232613134326333323139343964643335666234633461363833366639313537 -65656366653433373862393639303663346463356339623835333738636534633535303565613938 -37323337333630333633356238353633663864656637356263323938353239313764343439643530 -39343264326137316233333833633836626537636362623461623130323432386366336562393664 -63393964653933306232623932653630643033363339333538333733356161333335366335633734 -39646263316563386631636562333639643238316336333261313131366538363831633532313433 -63356263316366623365663364623066633132616137613233383134396161323033653031656136 -37373130333564346366653863663763646530636538353864313561303532336363343832373364 -63636566656362626565343365343231376331326561653334303466643561333134313438663830 -65306239366663326534306330343134626133313464383662346666636464393637636439643333 -34613937376137333065623563323964623766316134323530313565646336623133303837326139 -38323632616633303638383036356430623562383236306361386433643062353530376566613539 -31326465613330666330373536393733633238633864663836306266386364633433666136613037 -32323534303236313966633065623030356630383363623263633835383066363334316330326433 -32306266643463303837626232666235633337313964643663386464616166663464383131653534 -30613136643139636337303161336130343566653237616261613061353436646237326238373266 -62316365356535376332653262346138323433636236353439643261646163346164626132313337 -63643062363832393831656134366631393131313362643236643461316235653234623664353036 -32636564306334643232366661663533386238616431653863333437623237663761656133623931 -39343232383161646134623834303065336361626338633238353733323363366164336631656232 -64646365663138333030623566353930386334656532636630363230336663313266396464313031 -65633532663339646231363930396633613062633334626534633765623639346134653333353165 -36303736326438623762353939336334333935356561313231656664363937363237346431383833 -33363365666563383464356538313435313833623338306462316635633561656562313131643038 -62356462633561323036386239613136323634323633326233366662346334623730323030613134 -63396138346638626562313263316263616665646432376135333534656535313836643064623333 -64316230616634666263393037346266303139653133386237363932376563663530383235343665 -37613834323936313030306566366638393063656463376266316635393837623263306135646162 -31376434623161643530336139306431646636646331306161333034663238626337333438313930 -39303835656264626537633935353833616163386439333830636362353165613261643365336239 -34343434623131353463376331326330376235633663326462313835376334376135376664306564 -33373234656561636331323039643234613234396434306463653233636366353562343665363630 -36366461386334613463396537623064346639323964633035383836613531363966343262386339 -65653939646332346635663962313933383963376134646237336161373730343432643938376438 -35326365326664306335643963643837383766653834393630633161353831366432333438383165 -39323532373839336566363037313536373262623135323036376131356135393534646566303765 -38313534623162313233326463326637326335333930323731316633363963623561343462643533 -35356665383665646433333938373166356531373437646564623935393836613366303336636666 -36393631313963373135363365313062633738393038343539636665363337343463656263306532 -65613561336539313537643632393532303866393838306232363838333566343161656430383133 -61366537326264643631336535393830633737626637643239353830393831343534343664313732 -30613432366161646432373738393338373031326131313730626363366662303138373463393061 -31336264346534343465636365326337633030383531616364306261653766316232653039376336 -34656465656336386139363637373666366137343132636437376631303330373562333533653539 -30336165303163383839646265333466373135393635343939366662663263633765376363626366 -38616164343937383134663466313865393036396233316230393238663865383763626265623430 -31666236623535663265616530386462646331666161656331616337323966313265636262663336 -33396637363866366163336333656664636262376335363437663161623036306435346166616437 -38376162316564643165653965666338313234366364353239383065343230653632643932333832 -61326530636363373036336235363365633066636537346433303638303938306530353535393265 -63626138636632313636376661313439366562643764653831333832663931316361326634613536 -36353163623230343066636265303639353238326331393264656338633137316433633364653662 -64613536313366613138376665363232643732373834303731383964396535626262623865336430 -31313133333032393538666537623662653065366365343266363338303163663364353264623666 -30643733323934626437636565303134363732383137373837663965316536653231643632633263 -61623064343761383661623863343735323863383332383962366462343434343531343966333533 -36633165313565646538326234316634666164363863363139623237396430666232323736353061 -33656465643361343032656438653663313736383238356565636431333739343938326563393935 -31333665376563663232316363616637653866613465613663373761316230356431323239313736 -38353233336331343731626464373863306264623735383736393539316633653463666462636435 -66636263633763643337636135613030366134353765346263306565366361623639363831386636 -66633666323833346463333433313161363436326532613739656133643532333761616464343537 -37613166646238643431383539323438326163626265346431663437336530313633616166373965 -65393037393464373465393638313764326562306164663234386137383833613562633961663566 -37346362366261323962326161653365643331376233356133393062383932663164616533353431 -63636665616638316337386564386539623466353637623539636339383033353435343637666363 -66613566333566323263396463326333303038616565663137663132343039393761653638636233 -30393931316561346633623731383132306238383634323738353266653164373265616165643238 -62623338613338366135376536306632653731363636373062643237663433653032306234346465 -30636666666232343235323636326533656232313738316231623538366230333466393537613637 -39333333393565376135663338326262316135653435316566356365313161316466303431366339 -31623338383130613333386265646339313863363038663662366236313531333139643336316463 -32633564333262383930383763643832623539643662383035633730393636623230626231623833 -37383434393037313535626561666134303165313365343930623165336237396263346633393039 -61393237653366666337613035323332323863646239393662646230666139396339623836666562 -39643439373764323136353161303733346666626561313234653938623034346262353464373833 -63613434303037353562313335393937313237656666313564666563653838333338616465623734 -61333761373630363937663463653464396532343065616235333866346530623137393736323263 -33366664616666616336653636346364643331646461616265643036613933303661613738633164 -61633261363932323533346133386337393339363139323263633261666130623265363765323263 -62616533346262666431353435353836356361663339393637363337613566333633326337636566 -36623734326631623463306431616639656438323062363236613930333561343765353066646230 -32666337373730376536363563623962636238663035383932666265633839303832323035626137 -33343433666261303461373330323137646435306533353733323361353363616561343437383263 -61373666376564306232613661303666373363346237356234313261343666623462656461623564 -32663566666562383435346563633862353135336330386533343431626161656463356635353335 -35353630393538663136333261623766616539666663353230316531373664373030643265333539 -38393536353865653566326334313332313365636261303635626465346330656235343165656338 -35313030356434643363373138393665333633333931653639336438663066656437303565303439 -33386630346361383532393663623739303038636432326132343263316137626234373933386231 -32396362313562346234303466626562373566313466633837353534333530616632663633303264 -31343766623231313035383263306463653162333131616331663133633062393438323961353435 -61323838373930353136393564396533323966376534316361393261613339633762623934306162 -63313361376130363863353865336635386137383561343039643661623866643037656131663737 -37646337633438393534326639343637623133326138376637623065313831313537623534623235 -61663234393139323137323831306132326334383333623330666364313530353732393163666431 -38353765353762633535613938353533633934326533333332346633343165336632393239666438 -30373532653162366539306435356535666331643839663565643436336238333235303236343138 -38666232633366316631303037383330613032333863663339333931343563383836346632646665 -37393230336437366430393931383163666136376463333465363838376338653064636334663238 -62366632653861316536343035633732313333636231666162393735333334323465393331333166 -31613831326630333366643237623263613131376436666534643131613939393666306536656464 -64396461613032653866323466303562656465643866353736383535643930613930656564333431 -32633831643164326466653963633036663862656431386133653837643430343934323066303263 -31333731666466663364333135653037636131636230393331626166616337623564363339613861 -36336434663633323632316264306239373636306531303266353235393039316366376665616566 -32373462666565616332376337653933666639346236643234626336356664356430626134373132 -38663031303433356533356330646161376561373936626537616232643166303133353565663336 -30643239363933613339643938356532616539643636653663666366653332626134346463356261 -62303362346535373333303566666435373163343931643762333630363062393830636339386435 -33646239386234353536303434303964376534313134323236333235623535333031326538653661 -30326166316539373534313863636231643630636535366566333632373536623663373239623633 -61306236346236343535373461303762633564636238616437326233643961633538316530313263 -66666332633165613933613064303436363632663435333535393962323337303661323266376532 -31633963353031393663363366366130623462643630386232336366306432373733343061323737 -66316262363135636534646665613333663031613032303133656334663165383537633166373835 -38306365393863663566646231373035613037633533343266353664373033376161323437646637 -30386161656138333864646262326536326161653730333232353234306230663436313635333234 -30336239643065613561393333313131666138343533636562653965393566666265313835393665 -33333733613130366436333432343435316266633335356565303935633261333462393532373866 -34303731643838663433646634623935636165353533613834306561633935656265373666643666 -30383364333436306538373566663566343966363565313033363738646338343563393562373235 -62366235336461313232316539636262363566376363383664313563396336623763656639653964 -63356163653736623466386536353830623761636535346338396134616362346337346462373938 -64643162303163373062313039346433346532356136353065353663666666336337313362653133 -36356433623361313034313936303264633366643530323635613761383965383361343465326364 -39393062396430363336626362366430633331366461343930646662326565333661623336303232 -36353065313237303532623563646230646139613334336639353163646461353065616464313132 -63663830336636326336663363383531333765653462363566383731353063303439653930636165 -64386536343932613966346161366266323230663531373765393065656465636135363330653766 -3030 +63326636363139663932626130303461356133303435373330343137363439663136316231663533 +6438303239333635353461326264363462386262363538660a366538663835646565633662326132 +30636561623364326431396339303262663737393964383032346437623639363338376239383936 +3263353265333639350a633063653430313932366631303139346236376164636433643139363731 +34323237656564323738316335336637323037353235303335326539366234386539363639303364 +33356566643437616437346162653366636434383466323764326439363534383862646239363539 +39653765326363313464356635643962313931396133326433353334396435376334643031393133 +32373830653462626632343237363064333236386132643630373735326661643836366661386539 +33323031663738366630666134663838633564333536653763323037653864303033353963353434 +31316364313462623737323163333761663534353536306633646331353437646431333563366438 +66613261373362313935386664363066363839326662343963663365386664376431383064643334 +65343336363465633265316537613064353964343836656130333139666563626634326333303231 +31643134643966323132376631386437633764363265616565633031383962383464643163656433 +35663737636538306432343362373738336635353437353431633961376161626234363835363038 +63373332353262656338613533663035353233363365363362353939323832313130616163323466 +36326166363532303835616132643132373134663031613462346335306133303761373938666535 +63636134316337343532313061363736653937363866656434396236346637356339333463383037 +30636632363039366632643936373535643436663163633862646461656233646139373036373437 +36333662313463333863613830363166616630653030306661656133343363303339643538646664 +38366562663764383364343237633765343733633738376335366132333831633461623730386665 +31373535346366363761363630663437326261626363323663393734366631376564663065613464 +32383837643766353764326361373962323538613534376362303737616439333130653437653437 +61633134616437313330633665303532386234346436353666356633336666366135633261303264 +62323938393832313965363739326438323261393934363637356639656566316634663561313630 +61366666336137386331656335303362366538383161666264363035633531313331366661333235 +38623038323531333266656163323935383636393466343335666230386637333964346563323666 +30633065333831643833613733313339626138613831343536616237626136616330326234623332 +39623530653364646331666439363636383865343363336137386636616161303934333634366562 +30336435363039633439613965393331633638396136383764323563393738303735383033313436 +35396132613239343930656638383034323237346138393938643830653963396134623535636563 +39346339616462623435633364363934373132643139376335633863373039303731663837336664 +32623639373438376663313665633139353865653936303662303164353363636532393036643132 +33663630646664643063653639626439656435623439666330653636613165646637306661353239 +38313565646537303465326330386133643239356230656638346461393265363964393839393539 +35633634306565623562313932346136313262643636646466343765356534326565383462663839 +64656437373032316334323361626666666635346430396534326363663964623735626132636630 +38313864383331303161666465663431313462316466353539353437303265343036633637376662 +63656535396466353535366366396433393964383536313431353063643264613431373731646136 +32616237376664346435386137626166666563303463343763633734363466363931373735343130 +65323532323136623631396664643361396233613939636630393165346333643561386237626531 +34393335363331623765346634326364376635333130366331303830393166643331633732376432 +61643361343530386564306665366563373532666336383539306437623232643962643837316537 +31356464616336663734323862323934383730303039313062333166396562363765653339323665 +61333633323633636565323338393438646533306333626232646233323862333437393132393233 +30333637376231353232396331613631656238316665393863306135663065396633333733623139 +65383033643264383865326161333837316232663236396661633963646331623765336563646165 +30636530643039343164396138633232333736313762396139376135396235363739663566383661 +66653361633065663838373965393939663766623834646261653038616262313239376632353965 +64626233313633343235306564373065646161326532653638666135363065306437613263323866 +63623535303830383062633934626338643265343036363534363332393361336361613064366234 +30613761623464323261303139646131346366356236323239323866346635376535333030326564 +35386333373233383336363664633539613734646430366164393631643464353436653765316266 +38396336313734656361336232326365306238343365653163356166303035323633643262623161 +35633732373337343837356162356430313365323536383430323032643639646462643262613431 +36376639336238613734613435636362326562323665616463316161623039396530626663396662 +34653338313363666530663461376533356532623135393738613330363339313966333339313530 +65373466313234396239613032656561376261656462616666643734313232306435643136386434 +30333661333066346634323331656563316632613236336631396662353435366235626533346136 +38333232646461386636343831646339663565333266306665336166633565323337616333353663 +66626630373864663038613463356564373034626131656466613261363034626332633931326261 +34306462663737656134353634313062396164306530666336393932666634623638383239303234 +64346237373666633034323539353032613739646662666437303633363131303534313539333530 +61326263643962643030313737343530303137356464386339356363353164366338303361386364 +39363335613962653263303631323539343634353534666664663233303031656238363932376431 +30653265326537313261316263383864323534306363313139653063363865656265623339343262 +30613337633761383438346566393330343264363736633235313632383665396636313734663331 +65303434623833653637353639626662316132326135336532613864346266303230653233356634 +61386334316437633337313430356234316363383334326563313432386366323635623465633339 +62393830343733363639333565636361386231383936636465393531663734356266373266303063 +62633763666661633434616538363965373630313233356363343335643135303334626566336464 +38383838623438326164393366326362636339616334663536386563666231656332323538343866 +39336331656336356238653138626331306564333739636161356133613862633236303438633662 +61346331306162646664386339306338616433613138656533666431363565363365383063353834 +39623237343865353861323531626366396639323937346166316138353939653836663962666131 +33653866373663653764323662393034356638363661343336623938306465326539666232366632 +65373065643461343964633037626464633333633030366435333664306637386637316539333536 +38633264366631636436336631343364643633333464363038643234376131393862383130623735 +32616563633363346564356138303566663139656233656633613864323939383336373231396138 +37336430653235343635366338623563326431393130656634333165313336356264326338346533 +34616261393334376639643933316563346165383735396264336534343534313038326563643230 +35316434363432643864333264613565386661333130393332353439306635653832643165346166 +33346432366433393737323133363834396362383464626233366136656362643835303036396236 +33633963386231343664636534333062343964343633386534313631653138623531346662666561 +30366439373433306536633064393134393264343565626466353230616533663134643064363537 +30323562633461646234333363346630646130326565393930356632623462336237643235613935 +39323065666466396633613661383461336162326136663338626161396439653162366262613235 +37663531623239623036613738393964376139616330323132616236313762396361306235656165 +38393764633234663564643365346561396431376666353338323130636239393331616539333736 +64653831626638306237303633386464373139383935643261373935343234653465353263396637 +66363165363161656333356435363832303533343261666534383036616535656664303863643065 +66343866636664386364656130303236656365373065326239343261623533623731366435623461 +64613834346362663236356461313735663936323730366566663362393962623565316433666238 +33326131363335363965343162393161663634663861393137653739643633363062363065623032 +65336661353237633531363665396464356563663638656665383564393566666466663661333636 +32396331333938636233643136623066663235633064393532333661666161303431613133613563 +31323032653565313664326365623165636162393265353131353133343837623532306162323632 +35383831643062376232646231346261623864323065366666316634643432333264643432353138 +39343566303064306266363665663033393439613263396339643761363430356637643433643938 +63343363346266333866373036396635376638373737396261623862326163656664333361343265 +31376466343736376230636164643961636538393131636362343434653765626263376462343436 +64366164653662333338663138323532663635663832323565396465346362336233613066343262 +30336431623036313839653632363264646263666161356561313531386136393937333934393830 +66666338373564636430643037383638666665303631656263663364336430653338366565343636 +65316636346136383936663830663733663462613339643962363531616438313239633733316531 +64386161393638633961616334346163346466336364663830333563343430363163653933343565 +66653562653966343332343634383531393134303962363734663763616433316566373934663531 +30316431656163303066396166366432343065333634353038353134393233656164396236633430 +39656230343030316436656535396336636139656336653166633065663133656332616631373935 +38363561383865336634306435343230653637383435303433313236613831656539663563363761 +66326230323061663538353032366465623733326436333332343863316339623835336130343565 +36376531343361383861306565383539393861366436666231653638663465303534306264633635 +63313039633531636433623330633638623937623737383764343731316566393439316630393934 +36303936333931343461336531643938303062326633386539326365633263366533333661323632 +32393238306433636136366261643635656166636437333934613062326264383132613936393331 +30346132373461356565393362646537313830373364343531643262313361373636613631343631 +36623531383638313439363535623333343935613763356364653335653638383766306238303362 +32393839623838373936623166656430313136386161653365343836376362333630613864643263 +32373764316366666462633336626562303136306165373735666131326566626336653934653362 +35633531363039373063393237336430646362643765356234363535653138396134623232376435 +33343165366634633663366631613531306432626439373935343061313031646537646263373231 +65613438653065373261336639323037633538386665373630343235663731626264383364633566 +66633934633064643936623330343233313932646238613664663761393536666438303730666266 +30623130383632643162343365396637386438336639623964303936396432653039616162383564 +62386236623139653366326133386139636463316438386662373961386532383266383234336561 +35343161346539396236633931333935343736323633366363373135616636636363346232653530 +30376361316636663135336438626437396466623230653765656236643839373663343533306535 +32306534663462343136616363306361613233316637306233643530363539633138633635633565 +33633235373339376234656661343561313030393665383038333831366439303630366537373338 +30626561633737336436376265396434316362333133396333396365636264653764333262616237 +65626330613664373139336337373638666439643130346566653338656662656432666437356139 +61303138336134343662646665393665656537383033626133353235393135353163396563353634 +33366338663365633035343564626632333235366336633961393937323135633262653961373130 +61333562323734336631373033643266626261346437363436393031616261613966343130666265 +33626363626332343130306435646538356363353865323664363238313637363338326261616232 +33646135653638343333626366646236326261643637393465323239396132666665386537636361 +34393034323735343636623663323965663430363630383561376336383133356666376636623261 +63353164323138366635623365313665306536633566346637626630613834356665303433643262 +34613433626138386534313833326438636432656233323731306334313836373434313936653063 +64316638663734656334373762393434313239623234616235336433303733653263626532356437 +35333764373565626432616639393565393766333939333165303865646438323832363638383336 +64333262656664663037333964353563626339313361643366313161306335613935396430326236 +65386538626663643662383363373162373034313633613461356364646332666561306464376164 +61366666613938646139613738313439356337613436366365663262346366326532663061383966 +36346135666564303539336336613463386362393232616536383465656332336434356132306437 +65613666663235373537353334393336373730306631636165623361336536623165663062663139 +34303162326139313163653265613066333261303035316432616530343966316339653638626364 +62613736393063633937396363326631303230363665616534336432393437313665633838306531 +61363337613539616631383036396638306237303962393430636234643163623339626462623834 +65616331656239656362386262316436343130626633356362366533393330383135633832633634 +66343865373337653637616238373132306564343563313562613239323261323235333233643030 +61376465383535313462383337616539643035643830326637643836333534646266383161653066 +66373832353631323237333730353238353332343430303834663330343665316562346630363033 +30373064306630313031326239393731306630346463626364623635353463656361306263626663 +32326264303737616433393838343665396232356136343139633536313036373464653561666633 +31323763666464356363616634363465653534333333376263316138623263666266653133356438 +37376535636565356337326263373161346335313964396630363262393835333266376465313362 +34343234316463346336356533613633323862333263633862356632386235666663393563636663 +65613030373963363665656336386132396136633330393439386466386562363034626533626336 +31393639306632303566343332303265356532343736373539663063383339363064633432333835 +35623235303138343162643761336565323230633566333733376532383962323137323430396164 +34643539636365373833316264363665346337333031336262653262383162653664373233353661 +62386463643165383037373366313037323162636264343763343063313066623162326538626530 +65363236306637616438383638623334306561386537323061613137326664356332633330326636 +61623636633235346266346661363533376438386637386462306562666563393139643732633161 +31643630383139646631326362316465316463353136346562376634353664653133663632663133 +39643466656266653165653361333231653339383164303564663936643334313035386534616137 +61353231303630336237663732646138376339366461656338326632663361633665366463373531 +61666532623032613634646164616334613237613662373561353466313638383239613139613032 +32306335363935393065343062333437326662303765643363383532353436636163303830643330 +37623334333837386231393766353138376532383136313831633337343234363366333261653233 +62393030656533623438613230663062376565343039336537646265616233656664363565353739 +65373365356339346336303338633462643732333034653130646436393430653736623437303262 +65346437663366643863623063326565366631613138666464656239363439663061653061336632 +38313964373838386265316663386237663863656364643633323538366134323332616134356131 +63646462346337373735666138656665373438343366363532303661323262353165643734393462 +65633832666135313265373033343732353535646165303939386639336133343930376536326331 +62643737643938666639343163383333323862633064303432626165643038343034316264396431 +63643362326139333163383634376364353530626663653362653366393539303331313233333233 +65363463643539336362386663376338643966656336613038383430343237386365633334356566 +30626335323731383062643366633161636632363761613830396631336230383664323732613462 +31306134663634326362643331353063616264313233396366666532333530363234303462356239 +63306431346433353639306665643365626362373533363532656337363438323333393062383963 +39623337326433363532313132336536346365303061393364616437346130626366613634343036 +61366136336137333861313938346337363833623337643332323965363235663263656435346563 +62633532626462616634643036323665633762336636346362653133303339383338663030653532 +63353330663062653832646530633065626431336166316562356134386231623435313838303764 +63646562616638356561663636343639336138636666316634623538323363313831613838323131 +36363431663363303864643230363631303132373036396338333036373637633564303834646366 +64623530623332623031653731653931363262366432393032353839333637613761663661306233 +62396665363139376366633730313465303939653339653861613136626534613561663765303232 +33333330643533623333376236623730363435343265363635393731393765613364343762366239 +34336338613035363062306233663466343965373733313436636264303163343563303835356237 +65656335353634666133313161363264653430343738396465313538653466626130613730656239 +63326563323532643133666561663631336339343432396163396533623762303034333534663366 +63376661626637356130313439623839316134636537653430306133303761393130333234323838 +62336137623032336263613133643333363739353262313130366238323539366561366266326261 +64626137613030393863666138666666343037636437393464376433316461323266663131626131 +38316437336566666466333034336134326235336636666236643837623466343530373331656538 +37653634653462383062656334343538633236323265356531346334346565376538663936653131 +35666664353837633437666334313532316464316135376665643835393464646636306638623634 +30306131306137613963386439386232323636613337353437353630633235313661386664643864 +38323134303036316163336564303330323663613739393665363736613562636663313064383366 +62653862363865623634333236396161626635303361353030383539623963356163306436383533 +30363436346663323662366632636136646331396130373232383737383235386638633231323836 +36356338623162383065383730313538626130363866653963663266643230393134306263303138 +39633664633366343265383932613964366565323532363266393465396664666231303261663833 +32633564626132653861653937656238613036383463653363643633646666623732653330643636 +39323864313763376336633766303730343961376239303232653436393934626533396461643939 +65353838646364613162343933306432656565323566386466326433363366663463393262656335 +61653936363661656166306165656534316337366636306263303638323034663030386532386332 +33323630303434303963343433336638356432653561343638346438383535353263303136323234 +65616335346461333562616337343466383135653638613761323039393231666639643133666433 +38356135643664353738313239396338663165313563326661346533653962383030643334356665 +38633964383364643135316361623561316464323035336431666332336563653265363030356531 +32616535373135613239353934306431613536373438366230353333376462653630383664653839 +36353364333034636332343632363839376130313231653436313433613636333532643638646134 +34306632386164323163653333353764393961323164306161353163363130323736303862336239 +65393235373135646263353237623532636363633339303765623562663038316633313561666366 +38323862663232343362363564643533396465376337656362636236323239636531353836333536 +31393131366465396535653332646662626464363963633033346131363039363430393332613236 +36646165633164396632373561306664333366353431336138313938633463366130636635366562 +37653363336161373035636661323235643838336637333033646438643566393462633666616439 +65633439333763636661356332326336383739336438623338333736623264323233343738623935 +63313834623038646430656230643835656536323764623734303939633562643636356439623435 +38396165383964663231393335373835353963333339613837633833396439616261343335616233 +32666432613634366136623863623337313061646138646336373134656231633738303836303039 +65623337633837396337623431613635663734613066383939326430306639373733353464316138 +38353234396633306334666662633764303038623066663936343737326265336266323733316337 +38366666356136363237613435666531343133343438396138326562643735373634653664313037 +30646165393066663930653337313564343635396561633464363461666435303836323262363836 +38623262376436323265356535313162613066303836373135303836626162306635613462306330 +32393032386662396264356537643231373331373235653863656462643333623861666366663930 +33313962323738316538383131383838633333393836623963353162346133386431346638656233 +36356436616139393630313661306130613936633666643366336636323639626433616331333665 +31306236363962336334323339636465653163376238313266336539333739373765386137626131 +39633939613365303064313231353932303033616166636462626134623134393863343864663536 +61333137623435393865366130646634313366343966373063323530313732633538343932653437 +39393539356361303465613762656337623333393066653235313633623939653062383565343262 +34393438393331623864646237396533623730343363303763653535306563643838376439306232 +37373133623863356231373966636462623832613463313231656233623839303739313936393261 +30366464386538356533356136356330633466666165663864623738306238626531356139333661 +64613632653539396530656361343436303238336661346438656566643339373365653166313436 +30616562383066663634633434376330346538656230313338303731643536316237316333656636 +39646136363461356463353230613962396261363035386333613239346532646464323063383638 +37336565303163616238356431616432343735623364376264663735336239306439636331333338 +65633137366565346636386330383539346662646532336533303664633832373831353931633937 +61386561353265633537613064303337356362363261366630383038626535373035656430346530 +39313733633837633230336135633433326238626536396337633161373865633361396663396362 +31363931353731663939383462636365386337623065346664663531386235653461643565316531 +32636332363834633334666465646563363663656462393139626365353137306536393262653534 +63383636623735313139393038366261656539333935366330623233643865663935653731376664 +31353762396661376465663034326237366530313436333163613539346262616661393361383534 +32303462623964656162616463376233656239646536346335313530653336633236386532316435 +66653130613837383264636566656438643131643732643835306466343335613162653366356633 +33613364636661363337366666346535636137313264323535383833316165326336333735393132 +39363835383665316666333866393037666166623963376538346666656437643730353765323264 +65636335373361383530613866616132333231643736303237633936366664353132363665633962 +66393937323264626363333465616565383361313633383739623235396236346265396664613436 +62326663333834323939663832663235323564333866653133313730623061373663323866323936 +37613738656565356437313039383562323634363839303633366632373630636634343636326666 +62643333653935386264333430363331343761333634363636623235386438646164383664636462 +64323733343562646230316663316338623563656238663735326433353561303437363332366533 +39616439386539313339303230666232653238316233636231663535363733336330386562653561 +30396663613537353031386536656461343439613863343062653039393238363333623138626263 +66326661616363346538643432653936373033343862663361313239386538653464643263646666 +63616566386239643139363063613330623133343436343366373239633664313137346639633534 +39663236373635306332616362346339393764353761363864363934346462633532613165373839 +61323931363238653839623361343761323762386233346465343230663634306262393164623433 +65663965636433353333633632353737643364366630363938326664386437656264636631316537 +30636561666264623834626539663838666331333737313262643536313235376363663866363736 +38326264643634363866643963666632353961346464633731666561383732343066333666616630 +33333830336264353539306433326566626633623461623665383038623161313135313761336666 +39366238303735646263626231336230323934336465373534356665326136626137373033343265 +35343830376134313637396237303734393839306661666537323038633163363133353938626664 +32643234323631343534363533323830613636313062373539613839646466376538316639313562 +39393731633739613139393338373330393761333633623166663666396161646236356238353231 +37633561663631326562336538656137656566623061353261363431653533613739346138643732 +61353936353137386165663239666336313730336235333438373432333830323331613162633633 +64326234633830343632336163653734393633623137363335613830373536343637356130393635 +63623666313930366664303464306533326334313865363734646662623630616239353734623366 +61353037373564353264623533383938623366653863316664663730363234393433366233643638 +31653236386665396639346364393837633035653531306139313831323161393438623431316638 +32313335346530326136366662373834623735626339363435656464323265323361396337323536 +34323939643337356237626230616335636564656162616636393339636133623766303039366537 +66363832333232633037353165376563383566393731386335343666316362663530363339643563 +36623139383933336133633536656636306261663134643035623066323433303937343137363032 +36633963633734306663626330373266663565386131303365393636323438386166666662633233 +36363032343232623631313037313063633739636637383665653063393066633163313461383664 +66613537656335383465363931386437653361376133366266336364666634336261326231393764 +38356562396538303934333631303736343335396164623131613238623761303639356330343866 +61633537333332336430396563316639653337373831313236366135383633643832353839303738 +36336530346438373135333630643134623664666535343764636162323630663432386535646337 +32316338303663313566626564323664646237336363636434343330636638663366346438633839 +38613238663363333130343238383237346630666530373630623732323635353138366561373335 +32366537643639643735313662643538356233346137386332623862363736343261323939373638 +31353732656230376137643635393063643835303135313733303338376531316436626365313665 +37396131393231316238643634316566613963343364376361636439643562653636343731636135 +30326265353032333834646532626539353235373265663236643037306235653136643537346166 +33663262313662633338613434363664316662333165323231646664343836386133336136306532 +64343634623837316136343066316139646532303266353166383434323233303161663666323835 +34316438303763366434376534663333656635643661666635363064393038656461376335336565 +38333961623736303564626230343164366433356564346465346365363636326630363438393431 +30373334363066653539323531363136376162666262303232346238356132313963613336653762 +38646132313038613038626238353862626233656639373738626362306634376338396432323435 +65316166656166643230346565313438363435376162356431323337633636643831316133393534 +34323565353031396661623337653562656437343730343064313532306232353437663437393464 +39623863336563643762633765383465313431343666383033623430633136323161633730316430 +30636362333962366661633334376531393632366433383136633865313665663864356135616465 +35633437346339373565656238663730643762646439633734616336366166356466383864333737 +65636637383662656365323837616661663638343733653762643366343230366662353036383438 +38393939626539383664363936373563633136613335616531336235303562623037656233633963 +65663436363666373864363864663331356238643530616332376364643061383235333161333730 +30383062363830303836363639323938353630636534323866363863623364353435653733393132 +36366130336330346161313836316262653833633835663434373432643564356662633665623736 +39383736643536316234313764393436613162616538656635336435633535323063376430373733 +63653539306636623331306136653134646462363432313337386164623835323338643364383137 +31383632323866663766646536323133313939636432376133656338646261383165393634366434 +64323235333163393835376132393139353938306532646664656233353433623534303665323863 +35663039353061363131303464363761343966666563376131653734316661353138663061306364 +35613932666634306639303535336561656361366130626237373333666233376434313637643731 +62623234663533363037656538633261323636396334626463653835326466346366633634336165 +38663232383963643965646364396230383465623261306536653965393532313732613561376332 +66363737393464653535393336383764646532353564356439373764393935356136343634393561 +64363137613963313433646233353335626134383335656265393636613963393465373234326230 +62366137646335613532303638616262356630653861303464396263663337383338653766633331 +35323361336332396236363838613038353339353634316535386533393332623730366235636131 +63323264663436353634383866623235303166366561363965643639643764313134343939333635 +64393361343964653332323735623037666161383262303439653039633764386234643763383632 +62633535346538313866643032643234653539633230313562666330616232313331313764396432 +36396530343232373330613932643866323831316638373338306336306362333537336636383562 +36356531336163353562336236366366646565666339643130333637386231333366363638333030 +38363133313165343165336364336537623564613663313235353436303930656361333134643035 +31333366353865303766333233386230393062303139613163373131646136373437613966643531 +36663438646563366438363939613334353134363962313139353263663932306635623334333964 +62653631623336346238373934323730366266613335373564653331343739653630616564356633 +65383331393363656363663634616239303335636166373233393937343836373234366135633739 +35363833393062346261663130343166386336346265333562653138373439616434643163366639 +31323931383130633061666333393035363163373233643837666334623630333937613532346632 +61306164376535326661303235343561346332373533336139636634356166303935333733656639 +31376430306638623662323231326633383766613530313234633030333464333230653232623039 +63626639616536373136376135336534383862323630366332633234353533363838613065653538 +35653031623036303538393934663236313732646332346435353164376134653433643263643135 +65643139383361616630396234383238326264353138363039396331393238383362636165336337 +62363966663137396564306166663662656431656364656564396437393535633531386463663061 +33303837323364613936623665376465613466323836393136303964316339633332333036363337 +32323035303236613061343463663936336238303066306132623435353765633563323934316539 +31373666633666356332376566656233346366313334323231343237363662623538623738373434 +31313839643631316237646364363032666365643163346163313737373131663665333461653831 +35383366303936663764326539366137666163396233356466323831626633356536396636343839 +65623964306565396631356264666638646430666234386166326534373233363735393762393332 +32623765643662653731633061383661366263346631626262386665306430666238666665383039 +38366631376437333939636566633731316339663031653331393462646437333730323437663532 +32323538393331343865376531373734316137636464636537623934376332626666393130303734 +66623934343137363535343232623435623764343964356663316237666361356162316231363666 +61353430623361613133393563373131326463393837653830326235626631376236323132366339 +62393066653333663965643362626465656463623933326433313238663533346136366638383530 +39333865666534613530613838393965373833333334383261653264323534343866353332613434 +61646239626338383632393631623863633166313634363638353432623166356434616638643335 +31383434613433366238313564646136643430333765646337346135653764663733343835306533 +38303931633963366561656663626163333635633235333733313738353464393435323235393833 +33366234343162343931366462343337616666633837373537353032613837663661613536656461 +65633139396631383538366532343764636338363963303137366438363339386532613861333337 +62363033623832336562313936313935623138353236356665393932653564343636653563386538 +38306137336537313164393331383332306366383735313264306332356161336430616433626166 +36366465643432636532373965613937643165626433656464346234633965346566663263386564 +33333262636562333934343562656432306437653431326465383864636237376239303563636135 +63373333613032666231396433623761643234336238666262656338386133356435343662653030 +32373331313938663337613538393063643237396362313264306533353139323739616164316464 +31373765376364353065306439326139393137343137343333333366386435333764623764363861 +32363131363063623762383463373038363334363266613464636436633432313431636633663638 +64636337306164316366366434366264366535363134633366313533316363346162653730343561 +36343234353962643736613365376431336231303136666231663461373664623039313465333164 +32376330393334666564353463393638323439626164626435346637636365636232386532303533 +65353163656163303932623162623662623862623139653563613033306537373562643336303436 +61373735633966663239653835396664343031336461633863656230313265343165336662313137 +38653765663832363632613365366434366461316161303535303236396163356531323437303262 +62353832313438393935656633396662303364356266623131633335363136633033323866303362 +34616634343533393732393437343363363333393563373361396166326630376438613731306261 +39633932623636383532656166663737613362653437363836393363393363366635303839313139 +34326236616666366336363330663166636465616163353233653136326166376663666638333931 +62623063616666613236323939393962373634326534363361326462343233376436306637633763 +36316331386439653039346466366139633231663565316239373430616639366235636163343635 +63386665306566663963313765343065633034323030613136343637663333353633313234383864 +65626336623131366439393833663635363635366637393135356462656331643131363032343938 +66613462303734333762386364356563356137653731383431666161616461313831373633363961 +61336339613433396161356635303830383865383536386239323237623533613737346239643634 +63633738366262383438306461323563643530353464633132363637643663643138336164383936 +32366433323630353939316333386533373032363733366635393265623833323331343661633266 +66643665373566633462383264663637656236613236303364363561313230663164383133393038 +64643464393031623837306431353963393832303266383333653339333238313738663361303665 +32346633386566643730326431623233323666333962393438396664383663653236353930366131 +63616265383538613637333833663732376362333366643666383337336666363265663737363464 +38663932363233343565303230646666666538643039376231343537373636336431363939356635 +32656337353661303231376565386332343039666236303139363462616634343136306637333238 +33633337323435373862346237316532396534333665633931343633623266363338643931613862 +34646466613431656134313232336132363739626138323262313034623962643330373639653633 +34623864376439616539343330306666353830663564633165353564636534303135333964656464 +61323530663437613831623931336538343863356439383233656137343065383237653930613230 +33376635633632303331323338303733363764316130393338313536333538633066623163643431 +65343362336233646664396166343730323537663835633266313236656137343064313861303865 +33396239383739333265613336396362346365623532366466643630666435383731663263313661 +38636637326237663437353337646264336532386539386634666139353161633066613031373030 +39313737323061363838656338333763643165306165303334626533323463346434356332613830 +39323134663063323439353662326437626238363862633534333635356464396436666331353266 +36363231323534343035383231303664393238393930623861303165613930393238323066333739 +39323133336131643139663537306637363637386530653462303233306439363730623263613037 +31343630346331303561653663626432303832633665336632623464353766636263646463616139 +63353835643031356434666236666464396165356566343861306564666432613963343431303661 +65643937396362656439643932613263376239353464313237643965656630323432396534303061 +30633661663834326638656131633033643861646161306266336331383836343262323066646231 +37323836306239386137306633393864383133343135353431666366346131396362323331373331 +61303330666238333431343933616561373335393362383132373534396563393933363033386230 +62353234653036383664656539636538316363303666663565353465646233656263386261323131 +35366662386436373661343366373664613230666436376131323763633665616666333963316538 +66353161303636323033636135393566373435623465303239326333373261346532613263666266 +39323562323132356365313063356130656532633332646533316633613763323163336631333132 +37306363663661616535613631313562316230313331336530303630393733636231633335313365 +65373530373761303836663563323231633835363232346335316336313036666637383531613363 +63313362323034326662383033613761393035616262313430366532373036303535346430343130 +36383539653838636237613164353433346466303330646538323232346436646263343562666434 +61653438656464373165303032653433346666303663616263636434663231316433326630336236 +32613965636665323064363739393439313738343933333566313432633734616531333930653363 +34303566656232303863663062623636616434356362386365333066333662653333336566333361 +66656566643430353536366134646266633762653338363162613365376232396639356637616132 +62633936303534303564336162623639323134383431303930366435306563656437373866623365 +32633434336536313033396233393831343361336633386633666434333138356363643831396638 +32373331383661373465313335396537636161366236663363396139663963316339623231306162 +63343337626463373733376139643537643564306633653439313464663539653764313037663364 +65656261386631303364666137623436656330636433316136396564373135353535323630653466 +62613937663835333435356530643764383437393963333039363966323536306630303432333361 +39376263316130386631623161393438366233363838636361653131353230396634313466323466 +33346536336630626335646539343438643038353766383062306634326338326631343162646462 +35646538353563633939643135633264626664396137663938666134393334663730613630316433 +62623030626461326465643864623537383066616365633061386263396265636132376436343332 +30346234346432343839376332653062633165363531333563333262653239343866336132323566 +65326466363233643663386131316164303366653937356432393931336564626130326433663830 +35373663386363616432343761333361343132646233396437353939643066616632656463653065 +35346638313830346362646538333637343566623566666137333762656539646332623535666366 +32363530346465613933303936396561613766376261663162393234393130363135643737393532 +33316661376434333765663663323762333861346237373430323332613935323462383462346238 +63346637383132393362323233353037343363343532396134376331373535393137363563656631 +31353830303132656436623635666663616561653732393764383137383736386232373764613833 +32646165666366313862653939316533323066393161636164393765306633366662316134646630 +37333232653936633131363933383835383531323031383230656639316364653738366137343135 +38393032633637393030396162343738643439393731333232343034663338316130316332326636 +63343834383363643038356235623933643266376431333232623765656238316462343539366365 +33643234383134663533353166373166333334663963303738663337396364613663313238646466 +65653166633631626566373037396533393032326532656634386464313266386366663233313564 +65303561366137336162666461653562393738623432613763306631336564613232626262666535 +34646239393936633534346437623231386535663134333263626131626339306538333764623830 +39393039353239633335333538313062386262393735343237333234343363643436356465663765 +63323066393663613236626636373135383435343664616438623865646264326363303965326139 +61626265663439313361663362636665306438373966623639343363653466313464613430356530 +61643538363366356236366537633134353932613831323132363339363231363464323661643262 +62313865383762386338386136336239306364313539646566663330656439376365346265363030 +39343763643538303938313232393362383031376233396437356239666634653966336436613861 +33613233626262306362613039643738656361363235623735613630383261333937303139636339 +35366662626233663238643236323762356334326338366330653063333630643865616338643936 +35353362663937376238353533373564313563343335656430373661663935626165393565326263 +65643539356432626661353832666633393837326437323637616235633435396435666632623536 +36636330356433306436353032393362366232303061386335303636656536636130393961313365 +63623235636335386166666262613435653537663835363336613431626366383331633538333534 +61633235633730636263393238316232646435363964303839313564313135393235373531643938 +35653762653437346433303931613230653161303135303335653834623763363338353465346430 +30396333643663646537333233313539333866666539343533376162643239656131643036326437 +37333835306336373062383539383632343737343233643233636231343338306331653064353537 +31366130643264666438353565303463333833376433356131656166363565396437323531346262 +62366539353431336334333935646364343033646661643963333936633139306230663330303539 +32646439336463383862346137326366326666376638353735363633343539373037336364353731 +32663537626265653535393231643665326535633131363233646561303730313037393034313461 +38663039363363346333363661363261333266313036343935616634306336346538623636306438 +36363239663163666435613939313164663530666439323738623334333131326465306133653935 +34303030613736363065333761393332373533616438383834643661353664343635326135316465 +63303437356638346263656466623066653333633165396431316662393439346237633432396666 +366365626532376262353630333164613038 diff --git a/ansible/inventory/group_vars/all/vault.yml.example b/ansible/inventory/group_vars/all/vault.yml.example index 1e3afa8..b83726b 100644 --- a/ansible/inventory/group_vars/all/vault.yml.example +++ b/ansible/inventory/group_vars/all/vault.yml.example @@ -63,6 +63,7 @@ vault_mcp_switchboard_secret_key: changeme # SearXNG vault_searxng_secret_key: changeme +vault_searxng_brave_api_key: changeme # PgAdmin vault_pgadmin_email: admin@example.com diff --git a/ansible/inventory/host_vars/miranda.incus.yml b/ansible/inventory/host_vars/miranda.incus.yml index 3facceb..fac0463 100644 --- a/ansible/inventory/host_vars/miranda.incus.yml +++ b/ansible/inventory/host_vars/miranda.incus.yml @@ -84,3 +84,4 @@ searxng_port: 22089 searxng_base_url: http://miranda.incus:22089/ searxng_instance_name: "Ouranos Search" searxng_secret_key: "{{ vault_searxng_secret_key }}" +searxng_brave_api_key: "{{ vault_searxng_brave_api_key }}" diff --git a/ansible/inventory/host_vars/rosalind.incus.yml b/ansible/inventory/host_vars/rosalind.incus.yml index de5efd8..2741010 100644 --- a/ansible/inventory/host_vars/rosalind.incus.yml +++ b/ansible/inventory/host_vars/rosalind.incus.yml @@ -224,6 +224,7 @@ searxng_port: 22089 searxng_base_url: http://rosalind.incus:22089/ searxng_instance_name: "Ouranos Search" searxng_secret_key: "{{ vault_searxng_secret_key }}" +searxng_brave_api_key: "{{ vault_searxng_brave_api_key }}" # SearXNG OAuth2-Proxy Sidecar # Note: Each host supports at most one OAuth2-Proxy sidecar instance diff --git a/ansible/searxng/searxng-settings.yml.j2 b/ansible/searxng/searxng-settings.yml.j2 index 73817af..c684a19 100644 --- a/ansible/searxng/searxng-settings.yml.j2 +++ b/ansible/searxng/searxng-settings.yml.j2 @@ -18,7 +18,7 @@ server: bind_address: "0.0.0.0" secret_key: "{{ searxng_secret_key }}" base_url: "{{ searxng_base_url }}" - limiter: true + limiter: false public_instance: false method: "GET" image_proxy: true @@ -32,15 +32,40 @@ ui: # Red Panda Approved Search Configuration engines: + # --- General web --- - name: google - disabled: false + disabled: true + - name: brave + disabled: true - name: duckduckgo disabled: false - - name: bing - disabled: false - name: startpage disabled: false - - name: brave - disabled: false - name: mojeek - disabled: false \ No newline at end of file + disabled: false + - name: braveapi + engine: braveapi + api_key: "{{ searxng_brave_api_key }}" + results_per_page: 20 + inactive: false + disabled: false + + # --- Images: disable engines returning suspended / access denied --- + - name: brave.images + disabled: true + - name: duckduckgo images + disabled: true + - name: pexels + disabled: true + + # --- Videos: disable engines returning suspended / access denied --- + - name: brave.videos + disabled: true + - name: vimeo + disabled: true + + # --- News: disable engines returning suspended / parsing errors --- + - name: brave.news + disabled: true + - name: bing news + disabled: true \ No newline at end of file diff --git a/docs/brave_search_api.md b/docs/brave_search_api.md new file mode 100644 index 0000000..0287f23 --- /dev/null +++ b/docs/brave_search_api.md @@ -0,0 +1,2419 @@ +# Search + +`GET` `/v1/web/search` + +Search the web from a large independent index of web pages. + +**Base URL:** `https://api.search.brave.com/res` + +## Authorization + +| Name | Location | Type | Required | Description | +|------|----------|------|----------|-------------| +| `x-subscription-token` | header | string | Yes | The subscription token that was generated for the product. | + +## Query Parameters + +| Name | Location | Type | Required | Description | +|------|----------|------|----------|-------------| +| `q` | query | string | Yes | The user's search query term. Query can not be empty. Maximum of 400 characters and 50 words in the query. | +| `country` | query | string | No | The 2 character country code where the search results come from. | +| `search_lang` | query | string | No | The 2 or more character language code for which the search results are provided. | +| `ui_lang` | query | string | No | User interface language preferred in response. Usually of the format -. For more, see [RFC 9110](https://www.rfc-editor.org/rfc/rfc9110.html#name-accept-language). | +| `count` | query | integer | No | The number of search results returned in response. The maximum is 20. The actual number delivered may be less than requested. Combine this parameter with offset to paginate search results. **NOTE:** Count only applies to web results. | +| `offset` | query | integer | No | The zero based offset that indicates number of search result pages (count) to skip before returning the result. The default is 0 and the maximum is 9. The actual number delivered may be less than requested. Use this parameter along with the count parameter to page results. For example, if your user interface displays 10 search results per page, set count to 10 and offset to 0 to get the first page of results. For each subsequent page, increment offset by 1 (for example, 0, 1, 2). It is possible for multiple pages to include some overlap in results. | +| `safesearch` | query | string | No | Filters search results for adult content. The following values are supported: - **off** - No filtering is done. - **moderate** - Filters explicit content, like images and videos, but allows adult domains in the search results. - **strict** - Drops all adult content from search results. | +| `spellcheck` | query | boolean | No | Whether to spell check provided query. If the spell checker is enabled, the modified query is always used for search. The modified query can be found in altered key from the query response model. | +| `freshness` | query | string | No | Filters search results by page age. The age of a page is determined by the most relevant date reported by the content, such as its published or last modified date. The following values are supported: - **pd** - Pages aged 24 hours or less. - **pw** - Pages aged 7 days or less. - **pm** - Pages aged 31 days or less. - **py** - Pages aged 365 days or less. - **YYYY-MM-DDtoYYYY-MM-DD** - A custom date range is also supported by specifying start and end dates e.g. `2022-04-01to2022-07-30`. | +| `text_decorations` | query | boolean | No | Whether display strings (e.g. result snippets) should include decoration markers (e.g. highlighting characters). | +| `result_filter` | query | string | No | A comma delimited string of result types to include in the search response. Not specifying this parameter will return back all result types in search response where data is available and a plan with the corresponding option is subscribed. The response always includes query and type to identify any query modifications and response type respectively. Available result filter values are: `discussions`, `faq`, `infobox`, `news`, `query`, `summarizer`, `videos`, `web`, `locations`. **NOTE:** count param only applies to web results. | +| `units` | query | string | No | The measurement units. The following values are supported: - **metric** - The standardized measurement system (km, celcius..) - **imperial** - The British Imperial system of units (mile, fahrenheit..) | +| `goggles_id` | query | string | No | Goggles act as a custom re-ranking on top of Brave's search index. For more details, refer to the Goggles repository. This parameter is deprecated. Please use the goggles parameter. | +| `goggles` | query | string | No | Goggles act as a custom re-ranking on top of Brave's search index. The parameter supports both a url where the Goggle is hosted or the definition of the goggle. For more details, see the [Goggles documentation](/documentation/resources/goggles). The parameter can be repeated to query with multiple goggles. | +| `extra_snippets` | query | string | No | A snippet is an excerpt from a page you get as a result of the query, and extra_snippets allow you to get up to 5 additional, alternative excerpts. | +| `summary` | query | string | No | This parameter enables summary key generation in web search results. This is required for summarizer to be enabled. | +| `enable_rich_callback` | query | boolean | No | Enable rich callback. Allows you to get real time rich results via a callback URL when they are relevant to your query. **NOTE**: Requires `Search` subscription. | +| `include_fetch_metadata` | query | boolean | No | Include fetch metadata. | +| `operators` | query | boolean | No | Whether to apply search operators | + +## Headers + +| Name | Location | Type | Required | Description | +|------|----------|------|----------|-------------| +| `x-loc-lat` | header | string | No | The latitude of the client's geographical location in degrees, to provide relevant local results. The latitude must be greater than or equal to -90.0 degrees and less than or equal to +90.0 degrees. | +| `x-loc-long` | header | string | No | The longitude of the client's geographical location in degrees, to provide relevant local results. The longitude must be greater than or equal to -180.0 and less than or equal to +180.0 degrees. | +| `x-loc-timezone` | header | string | No | The IANA timezone for the client's device. For complete list of IANA timezones and location mappings see [IANA Database](https://www.iana.org/time-zones) and [Geonames Database](https://download.geonames.org/export/dump/). | +| `x-loc-city` | header | string | No | The generic name of the client city. | +| `x-loc-state` | header | string | No | A code which could be up to three characters, that represent the client's state/region. The region is the first-level subdivision (the broadest or least specific) of the [ISO 3166-2](https://en.wikipedia.org/wiki/ISO_3166-2) code. | +| `x-loc-state-name` | header | string | No | The name of the client's state/region. The region is the first-level subdivision (the broadest or least specific) of the [ISO 3166-2](https://en.wikipedia.org/wiki/ISO_3166-2) code. | +| `x-loc-country` | header | string | No | The two letter country code for the client's country. For a list of country codes, see [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2). | +| `x-loc-postal-code` | header | string | No | The client's postal code. | +| `api-version` | header | string | No | The API version to use. This is denoted by the format `YYYY-MM-DD`. Default is the latest that is available. Read more about [API versioning](/documentation/guides/versioning). | +| `accept` | header | string | No | The default supported media type is application/json. | +| `cache-control` | header | string | No | Brave Search will return cached content by default. To prevent caching set the Cache-Control header to `no-cache`. This is currently done as best effort. | +| `user-agent` | header | string | No | The user agent originating the request. Brave search can utilize the user agent to provide a different experience depending on the device as described by the string. The user agent should follow the commonly used browser agent strings on each platform. For more information on curating user agents, see [RFC 9110](https://www.rfc-editor.org/rfc/rfc9110.html#name-user-agent). | + +## Responses + +### 200 +Successful Response + +| Field | Type | Description | +|-------|------|-------------| +| `type` | string? | | +| `query` | object? | Search query string and its modifications that are used for search. | +| `query.original` | string | The original query that was requested. | +| `query.show_strict_warning` | bool? | Whether to show a warning that strict safesearch filtered results. | +| `query.altered` | string? | The altered query by the spellchecker. | +| `query.cleaned` | string? | The cleaned normalized query. | +| `query.safesearch` | bool? | Whether safesearch is active. | +| `query.is_navigational` | bool? | Whether the query is navigational (user wants to go to a specific site). | +| `query.is_geolocal` | bool? | Whether the query has local intent. | +| `query.local_decision` | string? | The local search decision for the query. | +| `query.local_locations_idx` | int? | Index of the local location result. | +| `query.is_trending` | bool? | Whether the query is a trending topic. | +| `query.is_news_breaking` | bool? | Whether the query is related to breaking news. | +| `query.ask_for_location` | bool? | Whether to prompt the user for their location. | +| `query.language` | object? | The detected language of the query. | +| `query.language.main` | string | The main language seen in the string. | +| `query.spellcheck_off` | bool? | Whether spellcheck is disabled for this query. | +| `query.country` | string? | The country code for the query. | +| `query.bad_results` | bool? | Whether the results are considered low quality. | +| `query.should_fallback` | bool? | Whether to fallback to alternative ranking. | +| `query.lat` | string? | The latitude for location-based queries. | +| `query.long` | string? | The longitude for location-based queries. | +| `query.postal_code` | string? | The postal code for location-based queries. | +| `query.city` | string? | The city for location-based queries. | +| `query.header_country` | string? | The country from request headers. | +| `query.more_results_available` | bool? | Whether more results are available for pagination. | +| `query.state` | string? | The state/region for location-based queries. | +| `query.custom_location_label` | string? | A custom label for the location. | +| `query.reddit_cluster` | string? | Reddit cluster identifier for discussion results. | +| `query.summary_key` | string? | Key to retrieve AI-generated summary for the query. | +| `query.search_operators` | object? | Search operators that were detected and applied to the query. | +| `query.search_operators.applied` | bool? | Whether search operators were applied to the query. | +| `query.search_operators.cleaned_query` | string? | The query after search operators have been processed. | +| `query.search_operators.sites` | string[]? | List of site domains extracted from site: operators. | +| `discussions` | object? | Discussions clusters aggregated from forum posts that are relevant to the query. | +| `discussions.type` | string? | The type identifying a discussion cluster. Currently the value is always `search`. | +| `discussions.results` | object[] | A list of discussion results. | +| `discussions.results[].title` | string | The title of the web page. | +| `discussions.results[].url` | string | The URL where the page is served. | +| `discussions.results[].is_source_local` | bool? | Whether the result is from a local source. | +| `discussions.results[].is_source_both` | bool? | Whether the result is from both local and global sources. | +| `discussions.results[].description` | string? | A description for the web page. | +| `discussions.results[].page_age` | string? | The page's date, based on its published or last modified date. | +| `discussions.results[].page_fetched` | string? | A date representing when the web page was last fetched. | +| `discussions.results[].fetched_content_timestamp` | int? | The timestamp when the content was fetched. | +| `discussions.results[].profile` | object? | A profile associated with the web page. | +| `discussions.results[].profile.name` | string | The name of the profile. | +| `discussions.results[].profile.url` | string | The original URL where the profile is available. | +| `discussions.results[].profile.long_name` | string? | The long name of the profile. | +| `discussions.results[].profile.img` | string? | The served image URL representing the profile. | +| `discussions.results[].language` | string? | The main language on the web search result. | +| `discussions.results[].family_friendly` | bool? | Whether the web page is family friendly. | +| `discussions.results[].type` | string? | The discussion result type identifier. The value is always `discussion`. | +| `discussions.results[].subtype` | string? | A sub type identifying the web search result type. | +| `discussions.results[].is_live` | bool? | Whether the web search result is currently live. Default value is `false`. | +| `discussions.results[].deep_results` | object? | Gathered information on a web search result. | +| `discussions.results[].deep_results.news` | object[]? | A list of news results associated with the result. | +| `discussions.results[].deep_results.news[].title` | string | The title of the web page. | +| `discussions.results[].deep_results.news[].url` | string | The URL where the page is served. | +| `discussions.results[].deep_results.news[].is_source_local` | bool? | Whether the result is from a local source. | +| `discussions.results[].deep_results.news[].is_source_both` | bool? | Whether the result is from both local and global sources. | +| `discussions.results[].deep_results.news[].description` | string? | A description for the web page. | +| `discussions.results[].deep_results.news[].page_age` | string? | The page's date, based on its published or last modified date. | +| `discussions.results[].deep_results.news[].page_fetched` | string? | A date representing when the web page was last fetched. | +| `discussions.results[].deep_results.news[].fetched_content_timestamp` | int? | The timestamp when the content was fetched. | +| `discussions.results[].deep_results.news[].profile` | object? | A profile associated with the web page. | +| `discussions.results[].deep_results.news[].profile.name` | string | The name of the profile. | +| `discussions.results[].deep_results.news[].profile.url` | string | The original URL where the profile is available. | +| `discussions.results[].deep_results.news[].profile.long_name` | string? | The long name of the profile. | +| `discussions.results[].deep_results.news[].profile.img` | string? | The served image URL representing the profile. | +| `discussions.results[].deep_results.news[].language` | string? | A language classification for the web page. | +| `discussions.results[].deep_results.news[].family_friendly` | bool? | Whether the web page is family friendly. | +| `discussions.results[].deep_results.news[].meta_url` | object? | The aggregated information on the URL representing a news result. | +| `discussions.results[].deep_results.news[].source` | string? | The source of the news. | +| `discussions.results[].deep_results.news[].breaking` | bool? | Whether the news result is currently a breaking news. | +| `discussions.results[].deep_results.news[].is_live` | bool? | Whether the news result is currently live. | +| `discussions.results[].deep_results.news[].thumbnail` | object? | The thumbnail associated with the news result. | +| `discussions.results[].deep_results.news[].thumbnail.src` | string | The served URL of the picture thumbnail. | +| `discussions.results[].deep_results.news[].thumbnail.alt` | string? | The alt text for the thumbnail image. | +| `discussions.results[].deep_results.news[].thumbnail.height` | int? | The height of the thumbnail. | +| `discussions.results[].deep_results.news[].thumbnail.width` | int? | The width of the thumbnail. | +| `discussions.results[].deep_results.news[].thumbnail.bg_color` | string? | The background color of the thumbnail. | +| `discussions.results[].deep_results.news[].thumbnail.original` | string? | The original URL of the image. | +| `discussions.results[].deep_results.news[].thumbnail.logo` | bool? | Whether the thumbnail is a logo. | +| `discussions.results[].deep_results.news[].thumbnail.duplicated` | bool? | Whether the thumbnail is a duplicate. | +| `discussions.results[].deep_results.news[].thumbnail.theme` | string? | The theme of the thumbnail (e.g., light or dark). | +| `discussions.results[].deep_results.news[].age` | string? | A human-readable representation of the news article's age. For example, `2 days ago`. | +| `discussions.results[].deep_results.news[].extra_snippets` | string[]? | A list of extra alternate snippets for the news search result. | +| `discussions.results[].deep_results.news[].icons` | object[]? | Icons associated with the news result. | +| `discussions.results[].deep_results.news[].icons[].href` | string | | +| `discussions.results[].deep_results.news[].icons[].sizes` | string? | | +| `discussions.results[].deep_results.news[].icons[].rel` | string? | | +| `discussions.results[].deep_results.news[].icons[].type` | string? | | +| `discussions.results[].deep_results.news[].icons[].ext` | string? | | +| `discussions.results[].deep_results.buttons` | object[]? | A list of buttoned results associated with the result. | +| `discussions.results[].deep_results.buttons[].type` | string? | A type identifying button result. The value is always `button_result`. | +| `discussions.results[].deep_results.buttons[].title` | string | The title of the result. | +| `discussions.results[].deep_results.buttons[].url` | string | The URL for the button result. | +| `discussions.results[].deep_results.videos` | object[]? | Videos associated with the result. | +| `discussions.results[].deep_results.videos[].title` | string | The title of the web page. | +| `discussions.results[].deep_results.videos[].url` | string | The URL where the page is served. | +| `discussions.results[].deep_results.videos[].is_source_local` | bool? | Whether the result is from a local source. | +| `discussions.results[].deep_results.videos[].is_source_both` | bool? | Whether the result is from both local and global sources. | +| `discussions.results[].deep_results.videos[].description` | string? | A description for the web page. | +| `discussions.results[].deep_results.videos[].page_age` | string? | The page's date, based on its published or last modified date. | +| `discussions.results[].deep_results.videos[].page_fetched` | string? | A date representing when the web page was last fetched. | +| `discussions.results[].deep_results.videos[].fetched_content_timestamp` | int? | The timestamp when the content was fetched. | +| `discussions.results[].deep_results.videos[].profile` | object? | A profile associated with the web page. | +| `discussions.results[].deep_results.videos[].profile.name` | string | The name of the profile. | +| `discussions.results[].deep_results.videos[].profile.url` | string | The original URL where the profile is available. | +| `discussions.results[].deep_results.videos[].profile.long_name` | string? | The long name of the profile. | +| `discussions.results[].deep_results.videos[].profile.img` | string? | The served image URL representing the profile. | +| `discussions.results[].deep_results.videos[].language` | string? | A language classification for the web page. | +| `discussions.results[].deep_results.videos[].family_friendly` | bool? | Whether the web page is family friendly. | +| `discussions.results[].deep_results.videos[].type` | string? | The type identifying the video result. The value is always `video_result`. | +| `discussions.results[].deep_results.videos[].video` | object | Meta data for the video. | +| `discussions.results[].deep_results.videos[].video.duration` | string? | A time string representing the duration of the video. The format can be HH:MM:SS or MM:SS. | +| `discussions.results[].deep_results.videos[].video.views` | string? | The number of views of the video. | +| `discussions.results[].deep_results.videos[].video.creator` | string? | The creator of the video. | +| `discussions.results[].deep_results.videos[].video.publisher` | string? | The publisher of the video. | +| `discussions.results[].deep_results.videos[].video.thumbnail` | object? | A thumbnail associated with the video. | +| `discussions.results[].deep_results.videos[].video.thumbnail.src` | string | The served URL of the picture thumbnail. | +| `discussions.results[].deep_results.videos[].video.thumbnail.alt` | string? | The alt text for the thumbnail image. | +| `discussions.results[].deep_results.videos[].video.thumbnail.height` | int? | The height of the thumbnail. | +| `discussions.results[].deep_results.videos[].video.thumbnail.width` | int? | The width of the thumbnail. | +| `discussions.results[].deep_results.videos[].video.thumbnail.bg_color` | string? | The background color of the thumbnail. | +| `discussions.results[].deep_results.videos[].video.thumbnail.original` | string? | The original URL of the image. | +| `discussions.results[].deep_results.videos[].video.thumbnail.logo` | bool? | Whether the thumbnail is a logo. | +| `discussions.results[].deep_results.videos[].video.thumbnail.duplicated` | bool? | Whether the thumbnail is a duplicate. | +| `discussions.results[].deep_results.videos[].video.thumbnail.theme` | string? | The theme of the thumbnail (e.g., light or dark). | +| `discussions.results[].deep_results.videos[].video.tags` | string[]? | A list of tags associated with the video. | +| `discussions.results[].deep_results.videos[].video.author` | object? | Author of the video. | +| `discussions.results[].deep_results.videos[].video.author.name` | string | The name of the profile. | +| `discussions.results[].deep_results.videos[].video.author.url` | string | The original URL where the profile is available. | +| `discussions.results[].deep_results.videos[].video.author.long_name` | string? | The long name of the profile. | +| `discussions.results[].deep_results.videos[].video.author.img` | string? | The served image URL representing the profile. | +| `discussions.results[].deep_results.videos[].video.requires_subscription` | bool? | Whether the video requires a subscription to watch. | +| `discussions.results[].deep_results.videos[].meta_url` | object? | Aggregated information on the URL. | +| `discussions.results[].deep_results.videos[].meta_url.scheme` | string | The protocol scheme extracted from the URL. | +| `discussions.results[].deep_results.videos[].meta_url.netloc` | string | The network location part extracted from the URL. | +| `discussions.results[].deep_results.videos[].meta_url.hostname` | string? | The lowercased domain name extracted from the URL. | +| `discussions.results[].deep_results.videos[].meta_url.favicon` | string | The favicon used for the URL. | +| `discussions.results[].deep_results.videos[].meta_url.path` | string | The hierarchical path of the URL useful as a display string. | +| `discussions.results[].deep_results.videos[].thumbnail` | object? | The thumbnail of the video. | +| `discussions.results[].deep_results.videos[].thumbnail.src` | string | The served URL of the picture thumbnail. | +| `discussions.results[].deep_results.videos[].thumbnail.alt` | string? | The alt text for the thumbnail image. | +| `discussions.results[].deep_results.videos[].thumbnail.height` | int? | The height of the thumbnail. | +| `discussions.results[].deep_results.videos[].thumbnail.width` | int? | The width of the thumbnail. | +| `discussions.results[].deep_results.videos[].thumbnail.bg_color` | string? | The background color of the thumbnail. | +| `discussions.results[].deep_results.videos[].thumbnail.original` | string? | The original URL of the image. | +| `discussions.results[].deep_results.videos[].thumbnail.logo` | bool? | Whether the thumbnail is a logo. | +| `discussions.results[].deep_results.videos[].thumbnail.duplicated` | bool? | Whether the thumbnail is a duplicate. | +| `discussions.results[].deep_results.videos[].thumbnail.theme` | string? | The theme of the thumbnail (e.g., light or dark). | +| `discussions.results[].deep_results.videos[].age` | string? | A human-readable representation of the video's age. For example, `2 days ago`. | +| `discussions.results[].deep_results.videos[].publisher` | string? | The publisher of the video. | +| `discussions.results[].deep_results.images` | object[]? | Images associated with the result. | +| `discussions.results[].deep_results.images[].thumbnail` | object | The thumbnail associated with the image. | +| `discussions.results[].deep_results.images[].thumbnail.src` | string | The served URL of the picture thumbnail. | +| `discussions.results[].deep_results.images[].thumbnail.alt` | string? | The alt text for the thumbnail image. | +| `discussions.results[].deep_results.images[].thumbnail.height` | int? | The height of the thumbnail. | +| `discussions.results[].deep_results.images[].thumbnail.width` | int? | The width of the thumbnail. | +| `discussions.results[].deep_results.images[].thumbnail.bg_color` | string? | The background color of the thumbnail. | +| `discussions.results[].deep_results.images[].thumbnail.original` | string? | The original URL of the image. | +| `discussions.results[].deep_results.images[].thumbnail.logo` | bool? | Whether the thumbnail is a logo. | +| `discussions.results[].deep_results.images[].thumbnail.duplicated` | bool? | Whether the thumbnail is a duplicate. | +| `discussions.results[].deep_results.images[].thumbnail.theme` | string? | The theme of the thumbnail (e.g., light or dark). | +| `discussions.results[].deep_results.images[].url` | string? | The URL of the image. | +| `discussions.results[].deep_results.images[].properties` | object? | Metadata on the image. | +| `discussions.results[].deep_results.images[].properties.url` | string | The original image URL. | +| `discussions.results[].deep_results.images[].properties.resized` | string | The URL for a better quality resized image. | +| `discussions.results[].deep_results.images[].properties.placeholder` | string | The placeholder image URL. | +| `discussions.results[].deep_results.images[].properties.height` | int? | The image height. | +| `discussions.results[].deep_results.images[].properties.width` | int? | The image width. | +| `discussions.results[].deep_results.images[].properties.format` | string? | The image format. | +| `discussions.results[].deep_results.images[].properties.content_size` | string? | The image size. | +| `discussions.results[].schemas` | any[]? | A list of schemas (structured data) extracted from the page. The schemas try to follow schema.org and will return anything we can extract from the HTML that can fit into these models. | +| `discussions.results[].meta_url` | object? | Aggregated information on the URL associated with the web search result. | +| `discussions.results[].thumbnail` | object? | The thumbnail of the web search result. | +| `discussions.results[].thumbnail.src` | string | The served URL of the picture thumbnail. | +| `discussions.results[].thumbnail.alt` | string? | The alt text for the thumbnail image. | +| `discussions.results[].thumbnail.height` | int? | The height of the thumbnail. | +| `discussions.results[].thumbnail.width` | int? | The width of the thumbnail. | +| `discussions.results[].thumbnail.bg_color` | string? | The background color of the thumbnail. | +| `discussions.results[].thumbnail.original` | string? | The original URL of the image. | +| `discussions.results[].thumbnail.logo` | bool? | Whether the thumbnail is a logo. | +| `discussions.results[].thumbnail.duplicated` | bool? | Whether the thumbnail is a duplicate. | +| `discussions.results[].thumbnail.theme` | string? | The theme of the thumbnail (e.g., light or dark). | +| `discussions.results[].age` | string? | A human-readable representation of the web search result's age. For example, `2 days ago`. | +| `discussions.results[].location` | object? | The location details if the query relates to a restaurant. | +| `discussions.results[].location.title` | string | The title of the web page. | +| `discussions.results[].location.url` | string | The URL where the page is served. | +| `discussions.results[].location.is_source_local` | bool? | Whether the result is from a local source. | +| `discussions.results[].location.is_source_both` | bool? | Whether the result is from both local and global sources. | +| `discussions.results[].location.description` | string? | A description for the web page. | +| `discussions.results[].location.page_age` | string? | The page's date, based on its published or last modified date. | +| `discussions.results[].location.page_fetched` | string? | A date representing when the web page was last fetched. | +| `discussions.results[].location.fetched_content_timestamp` | int? | The timestamp when the content was fetched. | +| `discussions.results[].location.profile` | object? | A profile associated with the web page. | +| `discussions.results[].location.profile.name` | string | The name of the profile. | +| `discussions.results[].location.profile.url` | string | The original URL where the profile is available. | +| `discussions.results[].location.profile.long_name` | string? | The long name of the profile. | +| `discussions.results[].location.profile.img` | string? | The served image URL representing the profile. | +| `discussions.results[].location.language` | string? | A language classification for the web page. | +| `discussions.results[].location.family_friendly` | bool? | Whether the web page is family friendly. | +| `discussions.results[].location.type` | string? | Location result type identifier. The value is always `location_result`. | +| `discussions.results[].location.provider_url` | string | The complete URL of the provider. | +| `discussions.results[].location.coordinates` | array? | A list of coordinates associated with the location. This is a lat long represented as a floating point. | +| `discussions.results[].location.zoom_level` | int? | The zoom level on the map. | +| `discussions.results[].location.thumbnail` | object? | The thumbnail associated with the location. | +| `discussions.results[].location.thumbnail.src` | string | The served URL of the picture thumbnail. | +| `discussions.results[].location.thumbnail.alt` | string? | The alt text for the thumbnail image. | +| `discussions.results[].location.thumbnail.height` | int? | The height of the thumbnail. | +| `discussions.results[].location.thumbnail.width` | int? | The width of the thumbnail. | +| `discussions.results[].location.thumbnail.bg_color` | string? | The background color of the thumbnail. | +| `discussions.results[].location.thumbnail.original` | string? | The original URL of the image. | +| `discussions.results[].location.thumbnail.logo` | bool? | Whether the thumbnail is a logo. | +| `discussions.results[].location.thumbnail.duplicated` | bool? | Whether the thumbnail is a duplicate. | +| `discussions.results[].location.thumbnail.theme` | string? | The theme of the thumbnail (e.g., light or dark). | +| `discussions.results[].location.postal_address` | object? | The postal address associated with the location. | +| `discussions.results[].location.postal_address.type` | string? | The type identifying a postal address. The value is always `PostalAddress`. | +| `discussions.results[].location.postal_address.country` | string? | The country associated with the location. | +| `discussions.results[].location.postal_address.postalCode` | string? | The postal code associated with the location. | +| `discussions.results[].location.postal_address.streetAddress` | string? | The street address associated with the location. | +| `discussions.results[].location.postal_address.addressRegion` | string? | The region associated with the location. This is usually a state. | +| `discussions.results[].location.postal_address.addressLocality` | string? | The address locality or subregion associated with the location. | +| `discussions.results[].location.postal_address.displayAddress` | string | The displayed address string. | +| `discussions.results[].location.opening_hours` | object? | The opening hours, if it is a business, associated with the location. | +| `discussions.results[].location.opening_hours.current_day` | object[]? | The current day opening hours. Can have two sets of opening hours. | +| `discussions.results[].location.opening_hours.current_day[].abbr_name` | string | A short string representing the day of the week. | +| `discussions.results[].location.opening_hours.current_day[].full_name` | string | A full string representing the day of the week. | +| `discussions.results[].location.opening_hours.current_day[].opens` | string | A 24 hr clock time string for the opening time of the business on a particular day. | +| `discussions.results[].location.opening_hours.current_day[].closes` | string | A 24 hr clock time string for the closing time of the business on a particular day. | +| `discussions.results[].location.opening_hours.days` | object[][]? | The opening hours for the whole week. | +| `discussions.results[].location.contact` | object? | The contact of the business associated with the location. | +| `discussions.results[].location.contact.email` | string? | The email address. | +| `discussions.results[].location.contact.telephone` | string? | The telephone number. | +| `discussions.results[].location.price_range` | string? | A display string used to show the price classification for the business. | +| `discussions.results[].location.rating` | object? | The ratings of the business. | +| `discussions.results[].location.rating.ratingValue` | number | The current value of the rating. | +| `discussions.results[].location.rating.bestRating` | number | Best rating received. | +| `discussions.results[].location.rating.reviewCount` | int? | The number of reviews associated with the rating. | +| `discussions.results[].location.rating.profile` | object? | The profile associated with the rating. | +| `discussions.results[].location.rating.profile.name` | string | The name of the profile. | +| `discussions.results[].location.rating.profile.url` | string | The original URL where the profile is available. | +| `discussions.results[].location.rating.profile.long_name` | string? | The long name of the profile. | +| `discussions.results[].location.rating.profile.img` | string? | The served image URL representing the profile. | +| `discussions.results[].location.rating.is_tripadvisor` | bool? | Whether the rating is coming from Tripadvisor. | +| `discussions.results[].location.distance` | object? | The distance of the location from the client. | +| `discussions.results[].location.distance.value` | number | The quantity of the unit. | +| `discussions.results[].location.distance.units` | string | The name of the unit associated with the quantity. | +| `discussions.results[].location.profiles` | object[]? | Profiles associated with the business. | +| `discussions.results[].location.profiles[].type` | string? | The type representing the source of data. This is usually `external`. | +| `discussions.results[].location.profiles[].name` | string | The name of the data provider. This can be a domain. | +| `discussions.results[].location.profiles[].url` | string | The URL where the information is coming from. | +| `discussions.results[].location.profiles[].long_name` | string? | The long name for the data provider. | +| `discussions.results[].location.profiles[].img` | string? | The served URL for the image data. | +| `discussions.results[].location.reviews` | object? | Aggregated reviews from various sources relevant to the business. | +| `discussions.results[].location.reviews.results` | object[] | A list of trip advisor reviews for the entity. | +| `discussions.results[].location.reviews.results[].title` | string | The title of the review. | +| `discussions.results[].location.reviews.results[].description` | string | A description seen in the review. | +| `discussions.results[].location.reviews.results[].date` | string | The date when the review was published. | +| `discussions.results[].location.reviews.results[].rating` | object | A rating given by the reviewer. | +| `discussions.results[].location.reviews.results[].rating.ratingValue` | number | The current value of the rating. | +| `discussions.results[].location.reviews.results[].rating.bestRating` | number | Best rating received. | +| `discussions.results[].location.reviews.results[].rating.reviewCount` | int? | The number of reviews associated with the rating. | +| `discussions.results[].location.reviews.results[].rating.profile` | object? | The profile associated with the rating. | +| `discussions.results[].location.reviews.results[].rating.profile.name` | string | The name of the profile. | +| `discussions.results[].location.reviews.results[].rating.profile.url` | string | The original URL where the profile is available. | +| `discussions.results[].location.reviews.results[].rating.profile.long_name` | string? | The long name of the profile. | +| `discussions.results[].location.reviews.results[].rating.profile.img` | string? | The served image URL representing the profile. | +| `discussions.results[].location.reviews.results[].rating.is_tripadvisor` | bool? | Whether the rating is coming from Tripadvisor. | +| `discussions.results[].location.reviews.results[].author` | object | The author of the review. | +| `discussions.results[].location.reviews.results[].author.type` | string? | A type identifying a person. The value is always `person`. | +| `discussions.results[].location.reviews.results[].author.name` | string | The name of the thing. | +| `discussions.results[].location.reviews.results[].author.url` | string? | A URL for the thing. | +| `discussions.results[].location.reviews.results[].author.thumbnail` | object? | Thumbnail associated with the thing. | +| `discussions.results[].location.reviews.results[].author.thumbnail.src` | string | The served URL of the picture thumbnail. | +| `discussions.results[].location.reviews.results[].author.thumbnail.alt` | string? | The alt text for the thumbnail image. | +| `discussions.results[].location.reviews.results[].author.thumbnail.height` | int? | The height of the thumbnail. | +| `discussions.results[].location.reviews.results[].author.thumbnail.width` | int? | The width of the thumbnail. | +| `discussions.results[].location.reviews.results[].author.thumbnail.bg_color` | string? | The background color of the thumbnail. | +| `discussions.results[].location.reviews.results[].author.thumbnail.original` | string? | The original URL of the image. | +| `discussions.results[].location.reviews.results[].author.thumbnail.logo` | bool? | Whether the thumbnail is a logo. | +| `discussions.results[].location.reviews.results[].author.thumbnail.duplicated` | bool? | Whether the thumbnail is a duplicate. | +| `discussions.results[].location.reviews.results[].author.thumbnail.theme` | string? | The theme of the thumbnail (e.g., light or dark). | +| `discussions.results[].location.reviews.results[].author.email` | string? | Email address of the person. | +| `discussions.results[].location.reviews.results[].review_url` | string | A URL link to the page where the review can be found. | +| `discussions.results[].location.reviews.results[].language` | string | The language of the review. | +| `discussions.results[].location.reviews.viewMoreUrl` | string | A URL to a web page where more information on the result can be seen. | +| `discussions.results[].location.reviews.reviews_in_foreign_language` | bool | Any reviews available in a foreign language. | +| `discussions.results[].location.pictures` | object? | A bunch of pictures associated with the business. | +| `discussions.results[].location.pictures.viewMoreUrl` | string? | A URL to view more pictures. | +| `discussions.results[].location.pictures.results` | object[] | A list of thumbnail results. | +| `discussions.results[].location.pictures.results[].src` | string | The served URL of the picture thumbnail. | +| `discussions.results[].location.pictures.results[].alt` | string? | The alt text for the thumbnail image. | +| `discussions.results[].location.pictures.results[].height` | int? | The height of the thumbnail. | +| `discussions.results[].location.pictures.results[].width` | int? | The width of the thumbnail. | +| `discussions.results[].location.pictures.results[].bg_color` | string? | The background color of the thumbnail. | +| `discussions.results[].location.pictures.results[].original` | string? | The original URL of the image. | +| `discussions.results[].location.pictures.results[].logo` | bool? | Whether the thumbnail is a logo. | +| `discussions.results[].location.pictures.results[].duplicated` | bool? | Whether the thumbnail is a duplicate. | +| `discussions.results[].location.pictures.results[].theme` | string? | The theme of the thumbnail (e.g., light or dark). | +| `discussions.results[].location.action` | object? | An action to be taken. | +| `discussions.results[].location.action.type` | string | The type representing the action. | +| `discussions.results[].location.action.url` | string | A URL representing the action to be taken. | +| `discussions.results[].location.serves_cuisine` | string[]? | A list of cuisine categories served. | +| `discussions.results[].location.categories` | string[]? | A list of categories. | +| `discussions.results[].location.icon_category` | string? | An icon category. | +| `discussions.results[].location.timezone` | string? | IANA timezone identifier. | +| `discussions.results[].location.timezone_offset` | int? | The UTC offset of the timezone. | +| `discussions.results[].location.id` | string? | A temporary id associated with this result, which can be used to retrieve extra information about the location. It remains valid for 8 hours. | +| `discussions.results[].location.results` | object[]? | Web results related to this location. | +| `discussions.results[].location.results[].title` | string | The title of the web page. | +| `discussions.results[].location.results[].url` | string | The URL where the page is served. | +| `discussions.results[].location.results[].is_source_local` | bool? | Whether the result is from a local source. | +| `discussions.results[].location.results[].is_source_both` | bool? | Whether the result is from both local and global sources. | +| `discussions.results[].location.results[].description` | string? | A description for the web page. | +| `discussions.results[].location.results[].page_age` | string? | The page's date, based on its published or last modified date. | +| `discussions.results[].location.results[].page_fetched` | string? | A date representing when the web page was last fetched. | +| `discussions.results[].location.results[].fetched_content_timestamp` | int? | The timestamp when the content was fetched. | +| `discussions.results[].location.results[].profile` | object? | A profile associated with the web page. | +| `discussions.results[].location.results[].profile.name` | string | The name of the profile. | +| `discussions.results[].location.results[].profile.url` | string | The original URL where the profile is available. | +| `discussions.results[].location.results[].profile.long_name` | string? | The long name of the profile. | +| `discussions.results[].location.results[].profile.img` | string? | The served image URL representing the profile. | +| `discussions.results[].location.results[].language` | string? | A language classification for the web page. | +| `discussions.results[].location.results[].family_friendly` | bool? | Whether the web page is family friendly. | +| `discussions.results[].location.results[].meta_url` | object | Aggregated information about the URL. | +| `discussions.results[].location.results[].meta_url.scheme` | string | The protocol scheme extracted from the URL. | +| `discussions.results[].location.results[].meta_url.netloc` | string | The network location part extracted from the URL. | +| `discussions.results[].location.results[].meta_url.hostname` | string? | The lowercased domain name extracted from the URL. | +| `discussions.results[].location.results[].meta_url.favicon` | string | The favicon used for the URL. | +| `discussions.results[].location.results[].meta_url.path` | string | The hierarchical path of the URL useful as a display string. | +| `discussions.results[].restaurant` | object? | Deprecated. Use `location` instead. | +| `discussions.results[].restaurant.title` | string | The title of the web page. | +| `discussions.results[].restaurant.url` | string | The URL where the page is served. | +| `discussions.results[].restaurant.is_source_local` | bool? | Whether the result is from a local source. | +| `discussions.results[].restaurant.is_source_both` | bool? | Whether the result is from both local and global sources. | +| `discussions.results[].restaurant.description` | string? | A description for the web page. | +| `discussions.results[].restaurant.page_age` | string? | The page's date, based on its published or last modified date. | +| `discussions.results[].restaurant.page_fetched` | string? | A date representing when the web page was last fetched. | +| `discussions.results[].restaurant.fetched_content_timestamp` | int? | The timestamp when the content was fetched. | +| `discussions.results[].restaurant.profile` | object? | A profile associated with the web page. | +| `discussions.results[].restaurant.profile.name` | string | The name of the profile. | +| `discussions.results[].restaurant.profile.url` | string | The original URL where the profile is available. | +| `discussions.results[].restaurant.profile.long_name` | string? | The long name of the profile. | +| `discussions.results[].restaurant.profile.img` | string? | The served image URL representing the profile. | +| `discussions.results[].restaurant.language` | string? | A language classification for the web page. | +| `discussions.results[].restaurant.family_friendly` | bool? | Whether the web page is family friendly. | +| `discussions.results[].restaurant.type` | string? | Location result type identifier. The value is always `location_result`. | +| `discussions.results[].restaurant.provider_url` | string | The complete URL of the provider. | +| `discussions.results[].restaurant.coordinates` | array? | A list of coordinates associated with the location. This is a lat long represented as a floating point. | +| `discussions.results[].restaurant.zoom_level` | int? | The zoom level on the map. | +| `discussions.results[].restaurant.thumbnail` | object? | The thumbnail associated with the location. | +| `discussions.results[].restaurant.thumbnail.src` | string | The served URL of the picture thumbnail. | +| `discussions.results[].restaurant.thumbnail.alt` | string? | The alt text for the thumbnail image. | +| `discussions.results[].restaurant.thumbnail.height` | int? | The height of the thumbnail. | +| `discussions.results[].restaurant.thumbnail.width` | int? | The width of the thumbnail. | +| `discussions.results[].restaurant.thumbnail.bg_color` | string? | The background color of the thumbnail. | +| `discussions.results[].restaurant.thumbnail.original` | string? | The original URL of the image. | +| `discussions.results[].restaurant.thumbnail.logo` | bool? | Whether the thumbnail is a logo. | +| `discussions.results[].restaurant.thumbnail.duplicated` | bool? | Whether the thumbnail is a duplicate. | +| `discussions.results[].restaurant.thumbnail.theme` | string? | The theme of the thumbnail (e.g., light or dark). | +| `discussions.results[].restaurant.postal_address` | object? | The postal address associated with the location. | +| `discussions.results[].restaurant.postal_address.type` | string? | The type identifying a postal address. The value is always `PostalAddress`. | +| `discussions.results[].restaurant.postal_address.country` | string? | The country associated with the location. | +| `discussions.results[].restaurant.postal_address.postalCode` | string? | The postal code associated with the location. | +| `discussions.results[].restaurant.postal_address.streetAddress` | string? | The street address associated with the location. | +| `discussions.results[].restaurant.postal_address.addressRegion` | string? | The region associated with the location. This is usually a state. | +| `discussions.results[].restaurant.postal_address.addressLocality` | string? | The address locality or subregion associated with the location. | +| `discussions.results[].restaurant.postal_address.displayAddress` | string | The displayed address string. | +| `discussions.results[].restaurant.opening_hours` | object? | The opening hours, if it is a business, associated with the location. | +| `discussions.results[].restaurant.opening_hours.current_day` | object[]? | The current day opening hours. Can have two sets of opening hours. | +| `discussions.results[].restaurant.opening_hours.current_day[].abbr_name` | string | A short string representing the day of the week. | +| `discussions.results[].restaurant.opening_hours.current_day[].full_name` | string | A full string representing the day of the week. | +| `discussions.results[].restaurant.opening_hours.current_day[].opens` | string | A 24 hr clock time string for the opening time of the business on a particular day. | +| `discussions.results[].restaurant.opening_hours.current_day[].closes` | string | A 24 hr clock time string for the closing time of the business on a particular day. | +| `discussions.results[].restaurant.opening_hours.days` | object[][]? | The opening hours for the whole week. | +| `discussions.results[].restaurant.contact` | object? | The contact of the business associated with the location. | +| `discussions.results[].restaurant.contact.email` | string? | The email address. | +| `discussions.results[].restaurant.contact.telephone` | string? | The telephone number. | +| `discussions.results[].restaurant.price_range` | string? | A display string used to show the price classification for the business. | +| `discussions.results[].restaurant.rating` | object? | The ratings of the business. | +| `discussions.results[].restaurant.rating.ratingValue` | number | The current value of the rating. | +| `discussions.results[].restaurant.rating.bestRating` | number | Best rating received. | +| `discussions.results[].restaurant.rating.reviewCount` | int? | The number of reviews associated with the rating. | +| `discussions.results[].restaurant.rating.profile` | object? | The profile associated with the rating. | +| `discussions.results[].restaurant.rating.profile.name` | string | The name of the profile. | +| `discussions.results[].restaurant.rating.profile.url` | string | The original URL where the profile is available. | +| `discussions.results[].restaurant.rating.profile.long_name` | string? | The long name of the profile. | +| `discussions.results[].restaurant.rating.profile.img` | string? | The served image URL representing the profile. | +| `discussions.results[].restaurant.rating.is_tripadvisor` | bool? | Whether the rating is coming from Tripadvisor. | +| `discussions.results[].restaurant.distance` | object? | The distance of the location from the client. | +| `discussions.results[].restaurant.distance.value` | number | The quantity of the unit. | +| `discussions.results[].restaurant.distance.units` | string | The name of the unit associated with the quantity. | +| `discussions.results[].restaurant.profiles` | object[]? | Profiles associated with the business. | +| `discussions.results[].restaurant.profiles[].type` | string? | The type representing the source of data. This is usually `external`. | +| `discussions.results[].restaurant.profiles[].name` | string | The name of the data provider. This can be a domain. | +| `discussions.results[].restaurant.profiles[].url` | string | The URL where the information is coming from. | +| `discussions.results[].restaurant.profiles[].long_name` | string? | The long name for the data provider. | +| `discussions.results[].restaurant.profiles[].img` | string? | The served URL for the image data. | +| `discussions.results[].restaurant.reviews` | object? | Aggregated reviews from various sources relevant to the business. | +| `discussions.results[].restaurant.reviews.results` | object[] | A list of trip advisor reviews for the entity. | +| `discussions.results[].restaurant.reviews.results[].title` | string | The title of the review. | +| `discussions.results[].restaurant.reviews.results[].description` | string | A description seen in the review. | +| `discussions.results[].restaurant.reviews.results[].date` | string | The date when the review was published. | +| `discussions.results[].restaurant.reviews.results[].rating` | object | A rating given by the reviewer. | +| `discussions.results[].restaurant.reviews.results[].rating.ratingValue` | number | The current value of the rating. | +| `discussions.results[].restaurant.reviews.results[].rating.bestRating` | number | Best rating received. | +| `discussions.results[].restaurant.reviews.results[].rating.reviewCount` | int? | The number of reviews associated with the rating. | +| `discussions.results[].restaurant.reviews.results[].rating.profile` | object? | The profile associated with the rating. | +| `discussions.results[].restaurant.reviews.results[].rating.profile.name` | string | The name of the profile. | +| `discussions.results[].restaurant.reviews.results[].rating.profile.url` | string | The original URL where the profile is available. | +| `discussions.results[].restaurant.reviews.results[].rating.profile.long_name` | string? | The long name of the profile. | +| `discussions.results[].restaurant.reviews.results[].rating.profile.img` | string? | The served image URL representing the profile. | +| `discussions.results[].restaurant.reviews.results[].rating.is_tripadvisor` | bool? | Whether the rating is coming from Tripadvisor. | +| `discussions.results[].restaurant.reviews.results[].author` | object | The author of the review. | +| `discussions.results[].restaurant.reviews.results[].author.type` | string? | A type identifying a person. The value is always `person`. | +| `discussions.results[].restaurant.reviews.results[].author.name` | string | The name of the thing. | +| `discussions.results[].restaurant.reviews.results[].author.url` | string? | A URL for the thing. | +| `discussions.results[].restaurant.reviews.results[].author.thumbnail` | object? | Thumbnail associated with the thing. | +| `discussions.results[].restaurant.reviews.results[].author.thumbnail.src` | string | The served URL of the picture thumbnail. | +| `discussions.results[].restaurant.reviews.results[].author.thumbnail.alt` | string? | The alt text for the thumbnail image. | +| `discussions.results[].restaurant.reviews.results[].author.thumbnail.height` | int? | The height of the thumbnail. | +| `discussions.results[].restaurant.reviews.results[].author.thumbnail.width` | int? | The width of the thumbnail. | +| `discussions.results[].restaurant.reviews.results[].author.thumbnail.bg_color` | string? | The background color of the thumbnail. | +| `discussions.results[].restaurant.reviews.results[].author.thumbnail.original` | string? | The original URL of the image. | +| `discussions.results[].restaurant.reviews.results[].author.thumbnail.logo` | bool? | Whether the thumbnail is a logo. | +| `discussions.results[].restaurant.reviews.results[].author.thumbnail.duplicated` | bool? | Whether the thumbnail is a duplicate. | +| `discussions.results[].restaurant.reviews.results[].author.thumbnail.theme` | string? | The theme of the thumbnail (e.g., light or dark). | +| `discussions.results[].restaurant.reviews.results[].author.email` | string? | Email address of the person. | +| `discussions.results[].restaurant.reviews.results[].review_url` | string | A URL link to the page where the review can be found. | +| `discussions.results[].restaurant.reviews.results[].language` | string | The language of the review. | +| `discussions.results[].restaurant.reviews.viewMoreUrl` | string | A URL to a web page where more information on the result can be seen. | +| `discussions.results[].restaurant.reviews.reviews_in_foreign_language` | bool | Any reviews available in a foreign language. | +| `discussions.results[].restaurant.pictures` | object? | A bunch of pictures associated with the business. | +| `discussions.results[].restaurant.pictures.viewMoreUrl` | string? | A URL to view more pictures. | +| `discussions.results[].restaurant.pictures.results` | object[] | A list of thumbnail results. | +| `discussions.results[].restaurant.pictures.results[].src` | string | The served URL of the picture thumbnail. | +| `discussions.results[].restaurant.pictures.results[].alt` | string? | The alt text for the thumbnail image. | +| `discussions.results[].restaurant.pictures.results[].height` | int? | The height of the thumbnail. | +| `discussions.results[].restaurant.pictures.results[].width` | int? | The width of the thumbnail. | +| `discussions.results[].restaurant.pictures.results[].bg_color` | string? | The background color of the thumbnail. | +| `discussions.results[].restaurant.pictures.results[].original` | string? | The original URL of the image. | +| `discussions.results[].restaurant.pictures.results[].logo` | bool? | Whether the thumbnail is a logo. | +| `discussions.results[].restaurant.pictures.results[].duplicated` | bool? | Whether the thumbnail is a duplicate. | +| `discussions.results[].restaurant.pictures.results[].theme` | string? | The theme of the thumbnail (e.g., light or dark). | +| `discussions.results[].restaurant.action` | object? | An action to be taken. | +| `discussions.results[].restaurant.action.type` | string | The type representing the action. | +| `discussions.results[].restaurant.action.url` | string | A URL representing the action to be taken. | +| `discussions.results[].restaurant.serves_cuisine` | string[]? | A list of cuisine categories served. | +| `discussions.results[].restaurant.categories` | string[]? | A list of categories. | +| `discussions.results[].restaurant.icon_category` | string? | An icon category. | +| `discussions.results[].restaurant.timezone` | string? | IANA timezone identifier. | +| `discussions.results[].restaurant.timezone_offset` | int? | The UTC offset of the timezone. | +| `discussions.results[].restaurant.id` | string? | A temporary id associated with this result, which can be used to retrieve extra information about the location. It remains valid for 8 hours. | +| `discussions.results[].restaurant.results` | object[]? | Web results related to this location. | +| `discussions.results[].restaurant.results[].title` | string | The title of the web page. | +| `discussions.results[].restaurant.results[].url` | string | The URL where the page is served. | +| `discussions.results[].restaurant.results[].is_source_local` | bool? | Whether the result is from a local source. | +| `discussions.results[].restaurant.results[].is_source_both` | bool? | Whether the result is from both local and global sources. | +| `discussions.results[].restaurant.results[].description` | string? | A description for the web page. | +| `discussions.results[].restaurant.results[].page_age` | string? | The page's date, based on its published or last modified date. | +| `discussions.results[].restaurant.results[].page_fetched` | string? | A date representing when the web page was last fetched. | +| `discussions.results[].restaurant.results[].fetched_content_timestamp` | int? | The timestamp when the content was fetched. | +| `discussions.results[].restaurant.results[].profile` | object? | A profile associated with the web page. | +| `discussions.results[].restaurant.results[].profile.name` | string | The name of the profile. | +| `discussions.results[].restaurant.results[].profile.url` | string | The original URL where the profile is available. | +| `discussions.results[].restaurant.results[].profile.long_name` | string? | The long name of the profile. | +| `discussions.results[].restaurant.results[].profile.img` | string? | The served image URL representing the profile. | +| `discussions.results[].restaurant.results[].language` | string? | A language classification for the web page. | +| `discussions.results[].restaurant.results[].family_friendly` | bool? | Whether the web page is family friendly. | +| `discussions.results[].restaurant.results[].meta_url` | object | Aggregated information about the URL. | +| `discussions.results[].restaurant.results[].meta_url.scheme` | string | The protocol scheme extracted from the URL. | +| `discussions.results[].restaurant.results[].meta_url.netloc` | string | The network location part extracted from the URL. | +| `discussions.results[].restaurant.results[].meta_url.hostname` | string? | The lowercased domain name extracted from the URL. | +| `discussions.results[].restaurant.results[].meta_url.favicon` | string | The favicon used for the URL. | +| `discussions.results[].restaurant.results[].meta_url.path` | string | The hierarchical path of the URL useful as a display string. | +| `discussions.results[].video` | object? | The video associated with the web search result. | +| `discussions.results[].video.duration` | string? | A time string representing the duration of the video. The format can be HH:MM:SS or MM:SS. | +| `discussions.results[].video.views` | string? | The number of views of the video. | +| `discussions.results[].video.creator` | string? | The creator of the video. | +| `discussions.results[].video.publisher` | string? | The publisher of the video. | +| `discussions.results[].video.thumbnail` | object? | A thumbnail associated with the video. | +| `discussions.results[].video.thumbnail.src` | string | The served URL of the picture thumbnail. | +| `discussions.results[].video.thumbnail.alt` | string? | The alt text for the thumbnail image. | +| `discussions.results[].video.thumbnail.height` | int? | The height of the thumbnail. | +| `discussions.results[].video.thumbnail.width` | int? | The width of the thumbnail. | +| `discussions.results[].video.thumbnail.bg_color` | string? | The background color of the thumbnail. | +| `discussions.results[].video.thumbnail.original` | string? | The original URL of the image. | +| `discussions.results[].video.thumbnail.logo` | bool? | Whether the thumbnail is a logo. | +| `discussions.results[].video.thumbnail.duplicated` | bool? | Whether the thumbnail is a duplicate. | +| `discussions.results[].video.thumbnail.theme` | string? | The theme of the thumbnail (e.g., light or dark). | +| `discussions.results[].video.tags` | string[]? | A list of tags associated with the video. | +| `discussions.results[].video.author` | object? | Author of the video. | +| `discussions.results[].video.author.name` | string | The name of the profile. | +| `discussions.results[].video.author.url` | string | The original URL where the profile is available. | +| `discussions.results[].video.author.long_name` | string? | The long name of the profile. | +| `discussions.results[].video.author.img` | string? | The served image URL representing the profile. | +| `discussions.results[].video.requires_subscription` | bool? | Whether the video requires a subscription to watch. | +| `discussions.results[].movie` | object? | The movie associated with the web search result. | +| `discussions.results[].movie.name` | string? | Name of the movie. | +| `discussions.results[].movie.description` | string? | A short plot summary for the movie. | +| `discussions.results[].movie.url` | string? | A URL serving a movie profile page. | +| `discussions.results[].movie.thumbnail` | object? | A thumbnail for a movie poster. | +| `discussions.results[].movie.thumbnail.src` | string | The served URL of the picture thumbnail. | +| `discussions.results[].movie.thumbnail.alt` | string? | The alt text for the thumbnail image. | +| `discussions.results[].movie.thumbnail.height` | int? | The height of the thumbnail. | +| `discussions.results[].movie.thumbnail.width` | int? | The width of the thumbnail. | +| `discussions.results[].movie.thumbnail.bg_color` | string? | The background color of the thumbnail. | +| `discussions.results[].movie.thumbnail.original` | string? | The original URL of the image. | +| `discussions.results[].movie.thumbnail.logo` | bool? | Whether the thumbnail is a logo. | +| `discussions.results[].movie.thumbnail.duplicated` | bool? | Whether the thumbnail is a duplicate. | +| `discussions.results[].movie.thumbnail.theme` | string? | The theme of the thumbnail (e.g., light or dark). | +| `discussions.results[].movie.release` | string? | The release date for the movie. | +| `discussions.results[].movie.directors` | object[]? | A list of people responsible for directing the movie. | +| `discussions.results[].movie.directors[].type` | string? | A type identifying a person. The value is always `person`. | +| `discussions.results[].movie.directors[].name` | string | The name of the thing. | +| `discussions.results[].movie.directors[].url` | string? | A URL for the thing. | +| `discussions.results[].movie.directors[].thumbnail` | object? | Thumbnail associated with the thing. | +| `discussions.results[].movie.directors[].thumbnail.src` | string | The served URL of the picture thumbnail. | +| `discussions.results[].movie.directors[].thumbnail.alt` | string? | The alt text for the thumbnail image. | +| `discussions.results[].movie.directors[].thumbnail.height` | int? | The height of the thumbnail. | +| `discussions.results[].movie.directors[].thumbnail.width` | int? | The width of the thumbnail. | +| `discussions.results[].movie.directors[].thumbnail.bg_color` | string? | The background color of the thumbnail. | +| `discussions.results[].movie.directors[].thumbnail.original` | string? | The original URL of the image. | +| `discussions.results[].movie.directors[].thumbnail.logo` | bool? | Whether the thumbnail is a logo. | +| `discussions.results[].movie.directors[].thumbnail.duplicated` | bool? | Whether the thumbnail is a duplicate. | +| `discussions.results[].movie.directors[].thumbnail.theme` | string? | The theme of the thumbnail (e.g., light or dark). | +| `discussions.results[].movie.directors[].email` | string? | Email address of the person. | +| `discussions.results[].movie.actors` | object[]? | A list of actors in the movie. | +| `discussions.results[].movie.actors[].type` | string? | A type identifying a person. The value is always `person`. | +| `discussions.results[].movie.actors[].name` | string | The name of the thing. | +| `discussions.results[].movie.actors[].url` | string? | A URL for the thing. | +| `discussions.results[].movie.actors[].thumbnail` | object? | Thumbnail associated with the thing. | +| `discussions.results[].movie.actors[].thumbnail.src` | string | The served URL of the picture thumbnail. | +| `discussions.results[].movie.actors[].thumbnail.alt` | string? | The alt text for the thumbnail image. | +| `discussions.results[].movie.actors[].thumbnail.height` | int? | The height of the thumbnail. | +| `discussions.results[].movie.actors[].thumbnail.width` | int? | The width of the thumbnail. | +| `discussions.results[].movie.actors[].thumbnail.bg_color` | string? | The background color of the thumbnail. | +| `discussions.results[].movie.actors[].thumbnail.original` | string? | The original URL of the image. | +| `discussions.results[].movie.actors[].thumbnail.logo` | bool? | Whether the thumbnail is a logo. | +| `discussions.results[].movie.actors[].thumbnail.duplicated` | bool? | Whether the thumbnail is a duplicate. | +| `discussions.results[].movie.actors[].thumbnail.theme` | string? | The theme of the thumbnail (e.g., light or dark). | +| `discussions.results[].movie.actors[].email` | string? | Email address of the person. | +| `discussions.results[].movie.rating` | object? | Rating provided to the movie from various sources. | +| `discussions.results[].movie.rating.ratingValue` | number | The current value of the rating. | +| `discussions.results[].movie.rating.bestRating` | number | Best rating received. | +| `discussions.results[].movie.rating.reviewCount` | int? | The number of reviews associated with the rating. | +| `discussions.results[].movie.rating.profile` | object? | The profile associated with the rating. | +| `discussions.results[].movie.rating.profile.name` | string | The name of the profile. | +| `discussions.results[].movie.rating.profile.url` | string | The original URL where the profile is available. | +| `discussions.results[].movie.rating.profile.long_name` | string? | The long name of the profile. | +| `discussions.results[].movie.rating.profile.img` | string? | The served image URL representing the profile. | +| `discussions.results[].movie.rating.is_tripadvisor` | bool? | Whether the rating is coming from Tripadvisor. | +| `discussions.results[].movie.duration` | string? | The runtime of the movie. The format is HH:MM:SS. | +| `discussions.results[].movie.genre` | string[]? | List of genres in which the movie can be classified. | +| `discussions.results[].movie.query` | string? | The query that resulted in the movie result. | +| `discussions.results[].faq` | object? | Any frequently asked questions associated with the web search result. | +| `discussions.results[].faq.items` | object[] | A list of question/answer pairs. | +| `discussions.results[].faq.items[].question` | string | The question being asked. | +| `discussions.results[].faq.items[].answer` | string | The answer to the question. | +| `discussions.results[].faq.items[].title` | string | The title of the post. | +| `discussions.results[].faq.items[].url` | string | The URL pointing to the post. | +| `discussions.results[].faq.items[].meta_url` | object? | Aggregated information about the URL. | +| `discussions.results[].faq.items[].meta_url.scheme` | string | The protocol scheme extracted from the URL. | +| `discussions.results[].faq.items[].meta_url.netloc` | string | The network location part extracted from the URL. | +| `discussions.results[].faq.items[].meta_url.hostname` | string? | The lowercased domain name extracted from the URL. | +| `discussions.results[].faq.items[].meta_url.favicon` | string | The favicon used for the URL. | +| `discussions.results[].faq.items[].meta_url.path` | string | The hierarchical path of the URL useful as a display string. | +| `discussions.results[].qa` | object? | Any question answer information associated with the web search result page. | +| `discussions.results[].qa.question` | string | The question that is being asked. | +| `discussions.results[].qa.answer` | object | An answer to the question. | +| `discussions.results[].qa.answer.text` | string | The main content of the answer. | +| `discussions.results[].qa.answer.author` | string? | The name of the author of the answer. | +| `discussions.results[].qa.answer.upvoteCount` | int? | Number of upvotes on the answer. | +| `discussions.results[].qa.answer.downvoteCount` | int? | The number of downvotes on the answer. | +| `discussions.results[].book` | object? | Any book information associated with the web search result page. | +| `discussions.results[].book.title` | string | The title of the book. | +| `discussions.results[].book.author` | object[] | The author of the book. | +| `discussions.results[].book.author[].type` | string? | A type identifying a person. The value is always `person`. | +| `discussions.results[].book.author[].name` | string | The name of the thing. | +| `discussions.results[].book.author[].url` | string? | A URL for the thing. | +| `discussions.results[].book.author[].thumbnail` | object? | Thumbnail associated with the thing. | +| `discussions.results[].book.author[].thumbnail.src` | string | The served URL of the picture thumbnail. | +| `discussions.results[].book.author[].thumbnail.alt` | string? | The alt text for the thumbnail image. | +| `discussions.results[].book.author[].thumbnail.height` | int? | The height of the thumbnail. | +| `discussions.results[].book.author[].thumbnail.width` | int? | The width of the thumbnail. | +| `discussions.results[].book.author[].thumbnail.bg_color` | string? | The background color of the thumbnail. | +| `discussions.results[].book.author[].thumbnail.original` | string? | The original URL of the image. | +| `discussions.results[].book.author[].thumbnail.logo` | bool? | Whether the thumbnail is a logo. | +| `discussions.results[].book.author[].thumbnail.duplicated` | bool? | Whether the thumbnail is a duplicate. | +| `discussions.results[].book.author[].thumbnail.theme` | string? | The theme of the thumbnail (e.g., light or dark). | +| `discussions.results[].book.author[].email` | string? | Email address of the person. | +| `discussions.results[].book.date` | string? | The publishing date of the book. | +| `discussions.results[].book.price` | object? | The price of the book. | +| `discussions.results[].book.price.price` | string | The price value in a given currency. | +| `discussions.results[].book.price.priceCurrency` | string | The currency of the price value. | +| `discussions.results[].book.pages` | int? | The number of pages in the book. | +| `discussions.results[].book.publisher` | object? | The publisher of the book. | +| `discussions.results[].book.publisher.type` | string? | A type identifying a person. The value is always `person`. | +| `discussions.results[].book.publisher.name` | string | The name of the thing. | +| `discussions.results[].book.publisher.url` | string? | A URL for the thing. | +| `discussions.results[].book.publisher.thumbnail` | object? | Thumbnail associated with the thing. | +| `discussions.results[].book.publisher.thumbnail.src` | string | The served URL of the picture thumbnail. | +| `discussions.results[].book.publisher.thumbnail.alt` | string? | The alt text for the thumbnail image. | +| `discussions.results[].book.publisher.thumbnail.height` | int? | The height of the thumbnail. | +| `discussions.results[].book.publisher.thumbnail.width` | int? | The width of the thumbnail. | +| `discussions.results[].book.publisher.thumbnail.bg_color` | string? | The background color of the thumbnail. | +| `discussions.results[].book.publisher.thumbnail.original` | string? | The original URL of the image. | +| `discussions.results[].book.publisher.thumbnail.logo` | bool? | Whether the thumbnail is a logo. | +| `discussions.results[].book.publisher.thumbnail.duplicated` | bool? | Whether the thumbnail is a duplicate. | +| `discussions.results[].book.publisher.thumbnail.theme` | string? | The theme of the thumbnail (e.g., light or dark). | +| `discussions.results[].book.publisher.email` | string? | Email address of the person. | +| `discussions.results[].book.rating` | object? | A gathered rating from different sources associated with the book. | +| `discussions.results[].book.rating.ratingValue` | number | The current value of the rating. | +| `discussions.results[].book.rating.bestRating` | number | Best rating received. | +| `discussions.results[].book.rating.reviewCount` | int? | The number of reviews associated with the rating. | +| `discussions.results[].book.rating.profile` | object? | The profile associated with the rating. | +| `discussions.results[].book.rating.profile.name` | string | The name of the profile. | +| `discussions.results[].book.rating.profile.url` | string | The original URL where the profile is available. | +| `discussions.results[].book.rating.profile.long_name` | string? | The long name of the profile. | +| `discussions.results[].book.rating.profile.img` | string? | The served image URL representing the profile. | +| `discussions.results[].book.rating.is_tripadvisor` | bool? | Whether the rating is coming from Tripadvisor. | +| `discussions.results[].rating` | object? | Rating found for the web search result page. | +| `discussions.results[].rating.ratingValue` | number | The current value of the rating. | +| `discussions.results[].rating.bestRating` | number | Best rating received. | +| `discussions.results[].rating.reviewCount` | int? | The number of reviews associated with the rating. | +| `discussions.results[].rating.profile` | object? | The profile associated with the rating. | +| `discussions.results[].rating.profile.name` | string | The name of the profile. | +| `discussions.results[].rating.profile.url` | string | The original URL where the profile is available. | +| `discussions.results[].rating.profile.long_name` | string? | The long name of the profile. | +| `discussions.results[].rating.profile.img` | string? | The served image URL representing the profile. | +| `discussions.results[].rating.is_tripadvisor` | bool? | Whether the rating is coming from Tripadvisor. | +| `discussions.results[].article` | object? | An article found for the web search result page. | +| `discussions.results[].article.author` | object[]? | The author of the article. | +| `discussions.results[].article.author[].type` | string? | A type identifying a person. The value is always `person`. | +| `discussions.results[].article.author[].name` | string | The name of the thing. | +| `discussions.results[].article.author[].url` | string? | A URL for the thing. | +| `discussions.results[].article.author[].thumbnail` | object? | Thumbnail associated with the thing. | +| `discussions.results[].article.author[].thumbnail.src` | string | The served URL of the picture thumbnail. | +| `discussions.results[].article.author[].thumbnail.alt` | string? | The alt text for the thumbnail image. | +| `discussions.results[].article.author[].thumbnail.height` | int? | The height of the thumbnail. | +| `discussions.results[].article.author[].thumbnail.width` | int? | The width of the thumbnail. | +| `discussions.results[].article.author[].thumbnail.bg_color` | string? | The background color of the thumbnail. | +| `discussions.results[].article.author[].thumbnail.original` | string? | The original URL of the image. | +| `discussions.results[].article.author[].thumbnail.logo` | bool? | Whether the thumbnail is a logo. | +| `discussions.results[].article.author[].thumbnail.duplicated` | bool? | Whether the thumbnail is a duplicate. | +| `discussions.results[].article.author[].thumbnail.theme` | string? | The theme of the thumbnail (e.g., light or dark). | +| `discussions.results[].article.author[].email` | string? | Email address of the person. | +| `discussions.results[].article.date` | string? | The date when the article was published. | +| `discussions.results[].article.publisher` | object? | The name of the publisher for the article. | +| `discussions.results[].article.publisher.type` | string? | A type string identifying an organization. The value is always `organization`. | +| `discussions.results[].article.publisher.name` | string | The name of the thing. | +| `discussions.results[].article.publisher.url` | string? | A URL for the thing. | +| `discussions.results[].article.publisher.thumbnail` | object? | Thumbnail associated with the thing. | +| `discussions.results[].article.publisher.thumbnail.src` | string | The served URL of the picture thumbnail. | +| `discussions.results[].article.publisher.thumbnail.alt` | string? | The alt text for the thumbnail image. | +| `discussions.results[].article.publisher.thumbnail.height` | int? | The height of the thumbnail. | +| `discussions.results[].article.publisher.thumbnail.width` | int? | The width of the thumbnail. | +| `discussions.results[].article.publisher.thumbnail.bg_color` | string? | The background color of the thumbnail. | +| `discussions.results[].article.publisher.thumbnail.original` | string? | The original URL of the image. | +| `discussions.results[].article.publisher.thumbnail.logo` | bool? | Whether the thumbnail is a logo. | +| `discussions.results[].article.publisher.thumbnail.duplicated` | bool? | Whether the thumbnail is a duplicate. | +| `discussions.results[].article.publisher.thumbnail.theme` | string? | The theme of the thumbnail (e.g., light or dark). | +| `discussions.results[].article.publisher.contact_points` | object[]? | A list of contact points for the organization. | +| `discussions.results[].article.publisher.contact_points[].type` | string? | A type string identifying a contact point. The value is always `contact_point`. | +| `discussions.results[].article.publisher.contact_points[].name` | string | The name of the thing. | +| `discussions.results[].article.publisher.contact_points[].url` | string? | A URL for the thing. | +| `discussions.results[].article.publisher.contact_points[].thumbnail` | object? | Thumbnail associated with the thing. | +| `discussions.results[].article.publisher.contact_points[].thumbnail.src` | string | The served URL of the picture thumbnail. | +| `discussions.results[].article.publisher.contact_points[].thumbnail.alt` | string? | The alt text for the thumbnail image. | +| `discussions.results[].article.publisher.contact_points[].thumbnail.height` | int? | The height of the thumbnail. | +| `discussions.results[].article.publisher.contact_points[].thumbnail.width` | int? | The width of the thumbnail. | +| `discussions.results[].article.publisher.contact_points[].thumbnail.bg_color` | string? | The background color of the thumbnail. | +| `discussions.results[].article.publisher.contact_points[].thumbnail.original` | string? | The original URL of the image. | +| `discussions.results[].article.publisher.contact_points[].thumbnail.logo` | bool? | Whether the thumbnail is a logo. | +| `discussions.results[].article.publisher.contact_points[].thumbnail.duplicated` | bool? | Whether the thumbnail is a duplicate. | +| `discussions.results[].article.publisher.contact_points[].thumbnail.theme` | string? | The theme of the thumbnail (e.g., light or dark). | +| `discussions.results[].article.publisher.contact_points[].telephone` | string? | The telephone number of the entity. | +| `discussions.results[].article.publisher.contact_points[].email` | string? | The email address of the entity. | +| `discussions.results[].article.thumbnail` | object? | A thumbnail associated with the article. | +| `discussions.results[].article.thumbnail.src` | string | The served URL of the picture thumbnail. | +| `discussions.results[].article.thumbnail.alt` | string? | The alt text for the thumbnail image. | +| `discussions.results[].article.thumbnail.height` | int? | The height of the thumbnail. | +| `discussions.results[].article.thumbnail.width` | int? | The width of the thumbnail. | +| `discussions.results[].article.thumbnail.bg_color` | string? | The background color of the thumbnail. | +| `discussions.results[].article.thumbnail.original` | string? | The original URL of the image. | +| `discussions.results[].article.thumbnail.logo` | bool? | Whether the thumbnail is a logo. | +| `discussions.results[].article.thumbnail.duplicated` | bool? | Whether the thumbnail is a duplicate. | +| `discussions.results[].article.thumbnail.theme` | string? | The theme of the thumbnail (e.g., light or dark). | +| `discussions.results[].article.isAccessibleForFree` | bool? | Whether the article is free to read or is behind a paywall. | +| `discussions.results[].product` | any? | The main product and a review that is found on the web search result page. | +| `discussions.results[].product.type` | string? | A string representing a product type. The value is always `Product`. | +| `discussions.results[].product.name` | string | The name of the product. | +| `discussions.results[].product.url` | string? | The URL of the product page. | +| `discussions.results[].product.category` | string? | The category of the product. | +| `discussions.results[].product.price` | string | The price of the product. | +| `discussions.results[].product.thumbnail` | object | A thumbnail associated with the product. | +| `discussions.results[].product.thumbnail.src` | string | The served URL of the picture thumbnail. | +| `discussions.results[].product.thumbnail.alt` | string? | The alt text for the thumbnail image. | +| `discussions.results[].product.thumbnail.height` | int? | The height of the thumbnail. | +| `discussions.results[].product.thumbnail.width` | int? | The width of the thumbnail. | +| `discussions.results[].product.thumbnail.bg_color` | string? | The background color of the thumbnail. | +| `discussions.results[].product.thumbnail.original` | string? | The original URL of the image. | +| `discussions.results[].product.thumbnail.logo` | bool? | Whether the thumbnail is a logo. | +| `discussions.results[].product.thumbnail.duplicated` | bool? | Whether the thumbnail is a duplicate. | +| `discussions.results[].product.thumbnail.theme` | string? | The theme of the thumbnail (e.g., light or dark). | +| `discussions.results[].product.description` | string? | The description of the product. | +| `discussions.results[].product.offers` | object[]? | A list of offers available on the product. | +| `discussions.results[].product.offers[].url` | string | The URL where the offer can be found. | +| `discussions.results[].product.offers[].priceCurrency` | string | The currency in which the offer is made. | +| `discussions.results[].product.offers[].price` | string | The price of the product currently on offer. | +| `discussions.results[].product.rating` | object? | A rating associated with the product. | +| `discussions.results[].product.rating.ratingValue` | number | The current value of the rating. | +| `discussions.results[].product.rating.bestRating` | number | Best rating received. | +| `discussions.results[].product.rating.reviewCount` | int? | The number of reviews associated with the rating. | +| `discussions.results[].product.rating.profile` | object? | The profile associated with the rating. | +| `discussions.results[].product.rating.profile.name` | string | The name of the profile. | +| `discussions.results[].product.rating.profile.url` | string | The original URL where the profile is available. | +| `discussions.results[].product.rating.profile.long_name` | string? | The long name of the profile. | +| `discussions.results[].product.rating.profile.img` | string? | The served image URL representing the profile. | +| `discussions.results[].product.rating.is_tripadvisor` | bool? | Whether the rating is coming from Tripadvisor. | +| `discussions.results[].product.gtin` | string? | A Global Trade Item Number (GTIN) for the product. | +| `discussions.results[].product.gtin8` | string? | The GTIN-8 (EAN/UCC-8) code of the product. | +| `discussions.results[].product.gtin12` | string? | The GTIN-12 (UPC) code of the product. | +| `discussions.results[].product.gtin13` | string? | The GTIN-13 (EAN/ISBN-13) code of the product. | +| `discussions.results[].product.gtin14` | string? | The GTIN-14 code of the product. | +| `discussions.results[].product_cluster` | any[]? | A list of products and reviews that are found on the web search result page. | +| `discussions.results[].product_cluster[].type` | string? | A string representing a product type. The value is always `Product`. | +| `discussions.results[].product_cluster[].name` | string | The name of the product. | +| `discussions.results[].product_cluster[].url` | string? | The URL of the product page. | +| `discussions.results[].product_cluster[].category` | string? | The category of the product. | +| `discussions.results[].product_cluster[].price` | string | The price of the product. | +| `discussions.results[].product_cluster[].thumbnail` | object | A thumbnail associated with the product. | +| `discussions.results[].product_cluster[].thumbnail.src` | string | The served URL of the picture thumbnail. | +| `discussions.results[].product_cluster[].thumbnail.alt` | string? | The alt text for the thumbnail image. | +| `discussions.results[].product_cluster[].thumbnail.height` | int? | The height of the thumbnail. | +| `discussions.results[].product_cluster[].thumbnail.width` | int? | The width of the thumbnail. | +| `discussions.results[].product_cluster[].thumbnail.bg_color` | string? | The background color of the thumbnail. | +| `discussions.results[].product_cluster[].thumbnail.original` | string? | The original URL of the image. | +| `discussions.results[].product_cluster[].thumbnail.logo` | bool? | Whether the thumbnail is a logo. | +| `discussions.results[].product_cluster[].thumbnail.duplicated` | bool? | Whether the thumbnail is a duplicate. | +| `discussions.results[].product_cluster[].thumbnail.theme` | string? | The theme of the thumbnail (e.g., light or dark). | +| `discussions.results[].product_cluster[].description` | string? | The description of the product. | +| `discussions.results[].product_cluster[].offers` | object[]? | A list of offers available on the product. | +| `discussions.results[].product_cluster[].offers[].url` | string | The URL where the offer can be found. | +| `discussions.results[].product_cluster[].offers[].priceCurrency` | string | The currency in which the offer is made. | +| `discussions.results[].product_cluster[].offers[].price` | string | The price of the product currently on offer. | +| `discussions.results[].product_cluster[].rating` | object? | A rating associated with the product. | +| `discussions.results[].product_cluster[].rating.ratingValue` | number | The current value of the rating. | +| `discussions.results[].product_cluster[].rating.bestRating` | number | Best rating received. | +| `discussions.results[].product_cluster[].rating.reviewCount` | int? | The number of reviews associated with the rating. | +| `discussions.results[].product_cluster[].rating.profile` | object? | The profile associated with the rating. | +| `discussions.results[].product_cluster[].rating.profile.name` | string | The name of the profile. | +| `discussions.results[].product_cluster[].rating.profile.url` | string | The original URL where the profile is available. | +| `discussions.results[].product_cluster[].rating.profile.long_name` | string? | The long name of the profile. | +| `discussions.results[].product_cluster[].rating.profile.img` | string? | The served image URL representing the profile. | +| `discussions.results[].product_cluster[].rating.is_tripadvisor` | bool? | Whether the rating is coming from Tripadvisor. | +| `discussions.results[].product_cluster[].gtin` | string? | A Global Trade Item Number (GTIN) for the product. | +| `discussions.results[].product_cluster[].gtin8` | string? | The GTIN-8 (EAN/UCC-8) code of the product. | +| `discussions.results[].product_cluster[].gtin12` | string? | The GTIN-12 (UPC) code of the product. | +| `discussions.results[].product_cluster[].gtin13` | string? | The GTIN-13 (EAN/ISBN-13) code of the product. | +| `discussions.results[].product_cluster[].gtin14` | string? | The GTIN-14 code of the product. | +| `discussions.results[].cluster_type` | string? | A type representing a cluster. The value can be product_cluster. | +| `discussions.results[].cluster` | object[]? | A list of web search results. | +| `discussions.results[].cluster[].title` | string | The title of the web page. | +| `discussions.results[].cluster[].url` | string | The URL where the page is served. | +| `discussions.results[].cluster[].is_source_local` | bool? | Whether the result is from a local source. | +| `discussions.results[].cluster[].is_source_both` | bool? | Whether the result is from both local and global sources. | +| `discussions.results[].cluster[].description` | string? | A description for the web page. | +| `discussions.results[].cluster[].page_age` | string? | The page's date, based on its published or last modified date. | +| `discussions.results[].cluster[].page_fetched` | string? | A date representing when the web page was last fetched. | +| `discussions.results[].cluster[].fetched_content_timestamp` | int? | The timestamp when the content was fetched. | +| `discussions.results[].cluster[].profile` | object? | A profile associated with the web page. | +| `discussions.results[].cluster[].profile.name` | string | The name of the profile. | +| `discussions.results[].cluster[].profile.url` | string | The original URL where the profile is available. | +| `discussions.results[].cluster[].profile.long_name` | string? | The long name of the profile. | +| `discussions.results[].cluster[].profile.img` | string? | The served image URL representing the profile. | +| `discussions.results[].cluster[].language` | string? | A language classification for the web page. | +| `discussions.results[].cluster[].family_friendly` | bool? | Whether the web page is family friendly. | +| `discussions.results[].creative_work` | object? | Aggregated information on the creative work found on the web search result. | +| `discussions.results[].creative_work.name` | string | The name of the creative work. | +| `discussions.results[].creative_work.rating` | object? | A rating that is given to the creative work. | +| `discussions.results[].creative_work.rating.ratingValue` | number | The current value of the rating. | +| `discussions.results[].creative_work.rating.bestRating` | number | Best rating received. | +| `discussions.results[].creative_work.rating.reviewCount` | int? | The number of reviews associated with the rating. | +| `discussions.results[].creative_work.rating.profile` | object? | The profile associated with the rating. | +| `discussions.results[].creative_work.rating.profile.name` | string | The name of the profile. | +| `discussions.results[].creative_work.rating.profile.url` | string | The original URL where the profile is available. | +| `discussions.results[].creative_work.rating.profile.long_name` | string? | The long name of the profile. | +| `discussions.results[].creative_work.rating.profile.img` | string? | The served image URL representing the profile. | +| `discussions.results[].creative_work.rating.is_tripadvisor` | bool? | Whether the rating is coming from Tripadvisor. | +| `discussions.results[].creative_work.thumbnail` | object | A thumbnail associated with the creative work. | +| `discussions.results[].creative_work.thumbnail.src` | string | The served URL of the picture thumbnail. | +| `discussions.results[].creative_work.thumbnail.alt` | string? | The alt text for the thumbnail image. | +| `discussions.results[].creative_work.thumbnail.height` | int? | The height of the thumbnail. | +| `discussions.results[].creative_work.thumbnail.width` | int? | The width of the thumbnail. | +| `discussions.results[].creative_work.thumbnail.bg_color` | string? | The background color of the thumbnail. | +| `discussions.results[].creative_work.thumbnail.original` | string? | The original URL of the image. | +| `discussions.results[].creative_work.thumbnail.logo` | bool? | Whether the thumbnail is a logo. | +| `discussions.results[].creative_work.thumbnail.duplicated` | bool? | Whether the thumbnail is a duplicate. | +| `discussions.results[].creative_work.thumbnail.theme` | string? | The theme of the thumbnail (e.g., light or dark). | +| `discussions.results[].music_recording` | object? | Aggregated information on music recording found on the web search result. | +| `discussions.results[].music_recording.name` | string | The name of the song or album. | +| `discussions.results[].music_recording.rating` | object? | The rating of the music. | +| `discussions.results[].music_recording.rating.ratingValue` | number | The current value of the rating. | +| `discussions.results[].music_recording.rating.bestRating` | number | Best rating received. | +| `discussions.results[].music_recording.rating.reviewCount` | int? | The number of reviews associated with the rating. | +| `discussions.results[].music_recording.rating.profile` | object? | The profile associated with the rating. | +| `discussions.results[].music_recording.rating.profile.name` | string | The name of the profile. | +| `discussions.results[].music_recording.rating.profile.url` | string | The original URL where the profile is available. | +| `discussions.results[].music_recording.rating.profile.long_name` | string? | The long name of the profile. | +| `discussions.results[].music_recording.rating.profile.img` | string? | The served image URL representing the profile. | +| `discussions.results[].music_recording.rating.is_tripadvisor` | bool? | Whether the rating is coming from Tripadvisor. | +| `discussions.results[].music_recording.thumbnail` | object? | A thumbnail associated with the music. | +| `discussions.results[].music_recording.thumbnail.src` | string | The served URL of the picture thumbnail. | +| `discussions.results[].music_recording.thumbnail.alt` | string? | The alt text for the thumbnail image. | +| `discussions.results[].music_recording.thumbnail.height` | int? | The height of the thumbnail. | +| `discussions.results[].music_recording.thumbnail.width` | int? | The width of the thumbnail. | +| `discussions.results[].music_recording.thumbnail.bg_color` | string? | The background color of the thumbnail. | +| `discussions.results[].music_recording.thumbnail.original` | string? | The original URL of the image. | +| `discussions.results[].music_recording.thumbnail.logo` | bool? | Whether the thumbnail is a logo. | +| `discussions.results[].music_recording.thumbnail.duplicated` | bool? | Whether the thumbnail is a duplicate. | +| `discussions.results[].music_recording.thumbnail.theme` | string? | The theme of the thumbnail (e.g., light or dark). | +| `discussions.results[].review` | object? | Aggregated information on the review found on the web search result. | +| `discussions.results[].review.type` | string? | A string representing review type. This is always `Review`. | +| `discussions.results[].review.name` | string | The review title for the review. | +| `discussions.results[].review.thumbnail` | object | The thumbnail associated with the reviewer. | +| `discussions.results[].review.thumbnail.src` | string | The served URL of the picture thumbnail. | +| `discussions.results[].review.thumbnail.alt` | string? | The alt text for the thumbnail image. | +| `discussions.results[].review.thumbnail.height` | int? | The height of the thumbnail. | +| `discussions.results[].review.thumbnail.width` | int? | The width of the thumbnail. | +| `discussions.results[].review.thumbnail.bg_color` | string? | The background color of the thumbnail. | +| `discussions.results[].review.thumbnail.original` | string? | The original URL of the image. | +| `discussions.results[].review.thumbnail.logo` | bool? | Whether the thumbnail is a logo. | +| `discussions.results[].review.thumbnail.duplicated` | bool? | Whether the thumbnail is a duplicate. | +| `discussions.results[].review.thumbnail.theme` | string? | The theme of the thumbnail (e.g., light or dark). | +| `discussions.results[].review.description` | string | A description of the review (the text of the review itself). | +| `discussions.results[].review.rating` | object | The ratings associated with the review. | +| `discussions.results[].review.rating.ratingValue` | number | The current value of the rating. | +| `discussions.results[].review.rating.bestRating` | number | Best rating received. | +| `discussions.results[].review.rating.reviewCount` | int? | The number of reviews associated with the rating. | +| `discussions.results[].review.rating.profile` | object? | The profile associated with the rating. | +| `discussions.results[].review.rating.profile.name` | string | The name of the profile. | +| `discussions.results[].review.rating.profile.url` | string | The original URL where the profile is available. | +| `discussions.results[].review.rating.profile.long_name` | string? | The long name of the profile. | +| `discussions.results[].review.rating.profile.img` | string? | The served image URL representing the profile. | +| `discussions.results[].review.rating.is_tripadvisor` | bool? | Whether the rating is coming from Tripadvisor. | +| `discussions.results[].recipe` | object? | Aggregated information on a recipe found on the web search result page. | +| `discussions.results[].recipe.title` | string | The title of the recipe. | +| `discussions.results[].recipe.description` | string | The description of the recipe. | +| `discussions.results[].recipe.thumbnail` | object | A thumbnail associated with the recipe. | +| `discussions.results[].recipe.thumbnail.src` | string | The served URL of the picture thumbnail. | +| `discussions.results[].recipe.thumbnail.alt` | string? | The alt text for the thumbnail image. | +| `discussions.results[].recipe.thumbnail.height` | int? | The height of the thumbnail. | +| `discussions.results[].recipe.thumbnail.width` | int? | The width of the thumbnail. | +| `discussions.results[].recipe.thumbnail.bg_color` | string? | The background color of the thumbnail. | +| `discussions.results[].recipe.thumbnail.original` | string? | The original URL of the image. | +| `discussions.results[].recipe.thumbnail.logo` | bool? | Whether the thumbnail is a logo. | +| `discussions.results[].recipe.thumbnail.duplicated` | bool? | Whether the thumbnail is a duplicate. | +| `discussions.results[].recipe.thumbnail.theme` | string? | The theme of the thumbnail (e.g., light or dark). | +| `discussions.results[].recipe.url` | string | The URL of the web page where the recipe was found. | +| `discussions.results[].recipe.domain` | string | The domain of the web page where the recipe was found. | +| `discussions.results[].recipe.favicon` | string | The URL for the favicon of the web page where the recipe was found. | +| `discussions.results[].recipe.time` | string? | The total time required to cook the recipe. | +| `discussions.results[].recipe.prep_time` | string? | The preparation time for the recipe. | +| `discussions.results[].recipe.cook_time` | string? | The cooking time for the recipe. | +| `discussions.results[].recipe.ingredients` | string? | Ingredients required for the recipe. | +| `discussions.results[].recipe.instructions` | object[]? | List of instructions for the recipe. | +| `discussions.results[].recipe.instructions[].text` | string | The how to text. | +| `discussions.results[].recipe.instructions[].name` | string? | A name for the how to. | +| `discussions.results[].recipe.instructions[].url` | string? | A URL associated with the how to. | +| `discussions.results[].recipe.instructions[].image` | string[]? | A list of image URLs associated with the how to. | +| `discussions.results[].recipe.servings` | int? | How many people the recipe serves. | +| `discussions.results[].recipe.calories` | int? | Calorie count for the recipe. | +| `discussions.results[].recipe.publisher` | string? | The publisher of the recipe. | +| `discussions.results[].recipe.rating` | object? | Aggregated information on the ratings associated with the recipe. | +| `discussions.results[].recipe.rating.ratingValue` | number | The current value of the rating. | +| `discussions.results[].recipe.rating.bestRating` | number | Best rating received. | +| `discussions.results[].recipe.rating.reviewCount` | int? | The number of reviews associated with the rating. | +| `discussions.results[].recipe.rating.profile` | object? | The profile associated with the rating. | +| `discussions.results[].recipe.rating.profile.name` | string | The name of the profile. | +| `discussions.results[].recipe.rating.profile.url` | string | The original URL where the profile is available. | +| `discussions.results[].recipe.rating.profile.long_name` | string? | The long name of the profile. | +| `discussions.results[].recipe.rating.profile.img` | string? | The served image URL representing the profile. | +| `discussions.results[].recipe.rating.is_tripadvisor` | bool? | Whether the rating is coming from Tripadvisor. | +| `discussions.results[].recipe.recipeCategory` | string? | The category of the recipe. | +| `discussions.results[].recipe.recipeCuisine` | string? | The cuisine classification for the recipe. | +| `discussions.results[].recipe.video` | object? | Aggregated information on the cooking video associated with the recipe. | +| `discussions.results[].recipe.video.duration` | string? | A time string representing the duration of the video. The format can be HH:MM:SS or MM:SS. | +| `discussions.results[].recipe.video.views` | string? | The number of views of the video. | +| `discussions.results[].recipe.video.creator` | string? | The creator of the video. | +| `discussions.results[].recipe.video.publisher` | string? | The publisher of the video. | +| `discussions.results[].recipe.video.thumbnail` | object? | A thumbnail associated with the video. | +| `discussions.results[].recipe.video.thumbnail.src` | string | The served URL of the picture thumbnail. | +| `discussions.results[].recipe.video.thumbnail.alt` | string? | The alt text for the thumbnail image. | +| `discussions.results[].recipe.video.thumbnail.height` | int? | The height of the thumbnail. | +| `discussions.results[].recipe.video.thumbnail.width` | int? | The width of the thumbnail. | +| `discussions.results[].recipe.video.thumbnail.bg_color` | string? | The background color of the thumbnail. | +| `discussions.results[].recipe.video.thumbnail.original` | string? | The original URL of the image. | +| `discussions.results[].recipe.video.thumbnail.logo` | bool? | Whether the thumbnail is a logo. | +| `discussions.results[].recipe.video.thumbnail.duplicated` | bool? | Whether the thumbnail is a duplicate. | +| `discussions.results[].recipe.video.thumbnail.theme` | string? | The theme of the thumbnail (e.g., light or dark). | +| `discussions.results[].recipe.video.tags` | string[]? | A list of tags associated with the video. | +| `discussions.results[].recipe.video.author` | object? | Author of the video. | +| `discussions.results[].recipe.video.author.name` | string | The name of the profile. | +| `discussions.results[].recipe.video.author.url` | string | The original URL where the profile is available. | +| `discussions.results[].recipe.video.author.long_name` | string? | The long name of the profile. | +| `discussions.results[].recipe.video.author.img` | string? | The served image URL representing the profile. | +| `discussions.results[].recipe.video.requires_subscription` | bool? | Whether the video requires a subscription to watch. | +| `discussions.results[].software` | object? | Aggregated information on a software product found on the web search result page. | +| `discussions.results[].software.name` | string? | The name of the software product. | +| `discussions.results[].software.author` | string? | The author of software product. | +| `discussions.results[].software.version` | string? | The latest version of the software product. | +| `discussions.results[].software.codeRepository` | string? | The code repository where the software product is currently available or maintained. | +| `discussions.results[].software.homepage` | string? | The home page of the software product. | +| `discussions.results[].software.datePublished` | string? | The date when the software product was published. | +| `discussions.results[].software.is_npm` | bool? | Whether the software product is available on npm. | +| `discussions.results[].software.is_pypi` | bool? | Whether the software product is available on pypi. | +| `discussions.results[].software.stars` | int? | The number of stars on the repository. | +| `discussions.results[].software.forks` | int? | The numbers of forks of the repository. | +| `discussions.results[].software.programmingLanguage` | string? | The programming language spread on the software product. | +| `discussions.results[].organization` | object? | Aggregated information on a organization found on the web search result page. | +| `discussions.results[].organization.type` | string? | A type string identifying an organization. The value is always `organization`. | +| `discussions.results[].organization.name` | string | The name of the thing. | +| `discussions.results[].organization.url` | string? | A URL for the thing. | +| `discussions.results[].organization.thumbnail` | object? | Thumbnail associated with the thing. | +| `discussions.results[].organization.thumbnail.src` | string | The served URL of the picture thumbnail. | +| `discussions.results[].organization.thumbnail.alt` | string? | The alt text for the thumbnail image. | +| `discussions.results[].organization.thumbnail.height` | int? | The height of the thumbnail. | +| `discussions.results[].organization.thumbnail.width` | int? | The width of the thumbnail. | +| `discussions.results[].organization.thumbnail.bg_color` | string? | The background color of the thumbnail. | +| `discussions.results[].organization.thumbnail.original` | string? | The original URL of the image. | +| `discussions.results[].organization.thumbnail.logo` | bool? | Whether the thumbnail is a logo. | +| `discussions.results[].organization.thumbnail.duplicated` | bool? | Whether the thumbnail is a duplicate. | +| `discussions.results[].organization.thumbnail.theme` | string? | The theme of the thumbnail (e.g., light or dark). | +| `discussions.results[].organization.contact_points` | object[]? | A list of contact points for the organization. | +| `discussions.results[].organization.contact_points[].type` | string? | A type string identifying a contact point. The value is always `contact_point`. | +| `discussions.results[].organization.contact_points[].name` | string | The name of the thing. | +| `discussions.results[].organization.contact_points[].url` | string? | A URL for the thing. | +| `discussions.results[].organization.contact_points[].thumbnail` | object? | Thumbnail associated with the thing. | +| `discussions.results[].organization.contact_points[].thumbnail.src` | string | The served URL of the picture thumbnail. | +| `discussions.results[].organization.contact_points[].thumbnail.alt` | string? | The alt text for the thumbnail image. | +| `discussions.results[].organization.contact_points[].thumbnail.height` | int? | The height of the thumbnail. | +| `discussions.results[].organization.contact_points[].thumbnail.width` | int? | The width of the thumbnail. | +| `discussions.results[].organization.contact_points[].thumbnail.bg_color` | string? | The background color of the thumbnail. | +| `discussions.results[].organization.contact_points[].thumbnail.original` | string? | The original URL of the image. | +| `discussions.results[].organization.contact_points[].thumbnail.logo` | bool? | Whether the thumbnail is a logo. | +| `discussions.results[].organization.contact_points[].thumbnail.duplicated` | bool? | Whether the thumbnail is a duplicate. | +| `discussions.results[].organization.contact_points[].thumbnail.theme` | string? | The theme of the thumbnail (e.g., light or dark). | +| `discussions.results[].organization.contact_points[].telephone` | string? | The telephone number of the entity. | +| `discussions.results[].organization.contact_points[].email` | string? | The email address of the entity. | +| `discussions.results[].content_type` | string? | The content type associated with the search result page. | +| `discussions.results[].extra_snippets` | string[]? | A list of extra alternate snippets for the web search result. | +| `discussions.results[].icons` | object[]? | Icons associated with the search result. | +| `discussions.results[].icons[].href` | string | | +| `discussions.results[].icons[].sizes` | string? | | +| `discussions.results[].icons[].rel` | string? | | +| `discussions.results[].icons[].type` | string? | | +| `discussions.results[].icons[].ext` | string? | | +| `discussions.results[].data` | object? | The enriched aggregated data for the relevant forum post. | +| `discussions.results[].data.forum_name` | string | The name of the forum. | +| `discussions.results[].data.num_answers` | int? | The number of answers to the post. | +| `discussions.results[].data.score` | string? | The score of the post on the forum. | +| `discussions.results[].data.title` | string? | The title of the post on the forum. | +| `discussions.results[].data.question` | string? | The question asked in the forum post. | +| `discussions.results[].data.top_comment` | string? | The top-rated comment under the forum post. | +| `discussions.mutated_by_goggles` | bool? | Whether the discussion results are changed by Goggles. The value is `false` by default. | +| `faq` | object? | Frequently asked questions that are relevant to the search query. | +| `faq.type` | string? | The FAQ result type identifier. The value is always `faq`. | +| `faq.results` | object[] | A list of aggregated question answer results relevant to the query. | +| `faq.results[].question` | string | The question being asked. | +| `faq.results[].answer` | string | The answer to the question. | +| `faq.results[].title` | string | The title of the post. | +| `faq.results[].url` | string | The URL pointing to the post. | +| `faq.results[].meta_url` | object? | Aggregated information about the URL. | +| `faq.results[].meta_url.scheme` | string | The protocol scheme extracted from the URL. | +| `faq.results[].meta_url.netloc` | string | The network location part extracted from the URL. | +| `faq.results[].meta_url.hostname` | string? | The lowercased domain name extracted from the URL. | +| `faq.results[].meta_url.favicon` | string | The favicon used for the URL. | +| `faq.results[].meta_url.path` | string | The hierarchical path of the URL useful as a display string. | +| `infobox` | object? | Aggregated information on an entity showable as an infobox. | +| `infobox.type` | string? | The type identifier for infoboxes. The value is always `graph`. | +| `infobox.results` | any[] | A list of infoboxes associated with the query. | +| `infobox.results[].title` | string | The title of the web page. | +| `infobox.results[].url` | string | The URL where the page is served. | +| `infobox.results[].is_source_local` | bool? | Whether the result is from a local source. | +| `infobox.results[].is_source_both` | bool? | Whether the result is from both local and global sources. | +| `infobox.results[].description` | string? | A description for the web page. | +| `infobox.results[].page_age` | string? | The page's date, based on its published or last modified date. | +| `infobox.results[].page_fetched` | string? | A date representing when the web page was last fetched. | +| `infobox.results[].fetched_content_timestamp` | int? | The timestamp when the content was fetched. | +| `infobox.results[].profile` | object? | A profile associated with the web page. | +| `infobox.results[].profile.name` | string | The name of the profile. | +| `infobox.results[].profile.url` | string | The original URL where the profile is available. | +| `infobox.results[].profile.long_name` | string? | The long name of the profile. | +| `infobox.results[].profile.img` | string? | The served image URL representing the profile. | +| `infobox.results[].language` | string? | A language classification for the web page. | +| `infobox.results[].family_friendly` | bool? | Whether the web page is family friendly. | +| `infobox.results[].type` | string? | The infobox result type identifier. The value is always `infobox`. | +| `infobox.results[].position` | int | The position on a search result page. | +| `infobox.results[].label` | string? | Any label associated with the entity. | +| `infobox.results[].category` | string? | Category classification for the entity. | +| `infobox.results[].long_desc` | string? | A longer description for the entity. | +| `infobox.results[].thumbnail` | object? | The thumbnail associated with the entity. | +| `infobox.results[].thumbnail.src` | string | The served URL of the picture thumbnail. | +| `infobox.results[].thumbnail.alt` | string? | The alt text for the thumbnail image. | +| `infobox.results[].thumbnail.height` | int? | The height of the thumbnail. | +| `infobox.results[].thumbnail.width` | int? | The width of the thumbnail. | +| `infobox.results[].thumbnail.bg_color` | string? | The background color of the thumbnail. | +| `infobox.results[].thumbnail.original` | string? | The original URL of the image. | +| `infobox.results[].thumbnail.logo` | bool? | Whether the thumbnail is a logo. | +| `infobox.results[].thumbnail.duplicated` | bool? | Whether the thumbnail is a duplicate. | +| `infobox.results[].thumbnail.theme` | string? | The theme of the thumbnail (e.g., light or dark). | +| `infobox.results[].attributes` | string[][]? | A list of attributes about the entity. | +| `infobox.results[].profiles` | any? | The profiles associated with the entity. | +| `infobox.results[].profiles[].name` | string | The name of the profile. | +| `infobox.results[].profiles[].url` | string | The original URL where the profile is available. | +| `infobox.results[].profiles[].long_name` | string? | The long name of the profile. | +| `infobox.results[].profiles[].img` | string? | The served image URL representing the profile. | +| `infobox.results[].website_url` | string? | The official website pertaining to the entity. | +| `infobox.results[].ratings` | object[]? | Any ratings given to the entity. | +| `infobox.results[].ratings[].ratingValue` | number | The current value of the rating. | +| `infobox.results[].ratings[].bestRating` | number | Best rating received. | +| `infobox.results[].ratings[].reviewCount` | int? | The number of reviews associated with the rating. | +| `infobox.results[].ratings[].profile` | object? | The profile associated with the rating. | +| `infobox.results[].ratings[].profile.name` | string | The name of the profile. | +| `infobox.results[].ratings[].profile.url` | string | The original URL where the profile is available. | +| `infobox.results[].ratings[].profile.long_name` | string? | The long name of the profile. | +| `infobox.results[].ratings[].profile.img` | string? | The served image URL representing the profile. | +| `infobox.results[].ratings[].is_tripadvisor` | bool? | Whether the rating is coming from Tripadvisor. | +| `infobox.results[].providers` | object[]? | A list of data sources for the entity. | +| `infobox.results[].providers[].type` | string? | The type representing the source of data. This is usually `external`. | +| `infobox.results[].providers[].name` | string | The name of the data provider. This can be a domain. | +| `infobox.results[].providers[].url` | string | The URL where the information is coming from. | +| `infobox.results[].providers[].long_name` | string? | The long name for the data provider. | +| `infobox.results[].providers[].img` | string? | The served URL for the image data. | +| `infobox.results[].distance` | object? | A unit representing quantity relevant to the entity. | +| `infobox.results[].distance.value` | number | The quantity of the unit. | +| `infobox.results[].distance.units` | string | The name of the unit associated with the quantity. | +| `infobox.results[].images` | object[]? | A list of images relevant to the entity. | +| `infobox.results[].images[].src` | string | The served URL of the picture thumbnail. | +| `infobox.results[].images[].alt` | string? | The alt text for the thumbnail image. | +| `infobox.results[].images[].height` | int? | The height of the thumbnail. | +| `infobox.results[].images[].width` | int? | The width of the thumbnail. | +| `infobox.results[].images[].bg_color` | string? | The background color of the thumbnail. | +| `infobox.results[].images[].original` | string? | The original URL of the image. | +| `infobox.results[].images[].logo` | bool? | Whether the thumbnail is a logo. | +| `infobox.results[].images[].duplicated` | bool? | Whether the thumbnail is a duplicate. | +| `infobox.results[].images[].theme` | string? | The theme of the thumbnail (e.g., light or dark). | +| `infobox.results[].movie` | object? | Any movie data relevant to the entity. Appears only when the result is a movie. | +| `infobox.results[].movie.name` | string? | Name of the movie. | +| `infobox.results[].movie.description` | string? | A short plot summary for the movie. | +| `infobox.results[].movie.url` | string? | A URL serving a movie profile page. | +| `infobox.results[].movie.thumbnail` | object? | A thumbnail for a movie poster. | +| `infobox.results[].movie.thumbnail.src` | string | The served URL of the picture thumbnail. | +| `infobox.results[].movie.thumbnail.alt` | string? | The alt text for the thumbnail image. | +| `infobox.results[].movie.thumbnail.height` | int? | The height of the thumbnail. | +| `infobox.results[].movie.thumbnail.width` | int? | The width of the thumbnail. | +| `infobox.results[].movie.thumbnail.bg_color` | string? | The background color of the thumbnail. | +| `infobox.results[].movie.thumbnail.original` | string? | The original URL of the image. | +| `infobox.results[].movie.thumbnail.logo` | bool? | Whether the thumbnail is a logo. | +| `infobox.results[].movie.thumbnail.duplicated` | bool? | Whether the thumbnail is a duplicate. | +| `infobox.results[].movie.thumbnail.theme` | string? | The theme of the thumbnail (e.g., light or dark). | +| `infobox.results[].movie.release` | string? | The release date for the movie. | +| `infobox.results[].movie.directors` | object[]? | A list of people responsible for directing the movie. | +| `infobox.results[].movie.directors[].type` | string? | A type identifying a person. The value is always `person`. | +| `infobox.results[].movie.directors[].name` | string | The name of the thing. | +| `infobox.results[].movie.directors[].url` | string? | A URL for the thing. | +| `infobox.results[].movie.directors[].thumbnail` | object? | Thumbnail associated with the thing. | +| `infobox.results[].movie.directors[].thumbnail.src` | string | The served URL of the picture thumbnail. | +| `infobox.results[].movie.directors[].thumbnail.alt` | string? | The alt text for the thumbnail image. | +| `infobox.results[].movie.directors[].thumbnail.height` | int? | The height of the thumbnail. | +| `infobox.results[].movie.directors[].thumbnail.width` | int? | The width of the thumbnail. | +| `infobox.results[].movie.directors[].thumbnail.bg_color` | string? | The background color of the thumbnail. | +| `infobox.results[].movie.directors[].thumbnail.original` | string? | The original URL of the image. | +| `infobox.results[].movie.directors[].thumbnail.logo` | bool? | Whether the thumbnail is a logo. | +| `infobox.results[].movie.directors[].thumbnail.duplicated` | bool? | Whether the thumbnail is a duplicate. | +| `infobox.results[].movie.directors[].thumbnail.theme` | string? | The theme of the thumbnail (e.g., light or dark). | +| `infobox.results[].movie.directors[].email` | string? | Email address of the person. | +| `infobox.results[].movie.actors` | object[]? | A list of actors in the movie. | +| `infobox.results[].movie.actors[].type` | string? | A type identifying a person. The value is always `person`. | +| `infobox.results[].movie.actors[].name` | string | The name of the thing. | +| `infobox.results[].movie.actors[].url` | string? | A URL for the thing. | +| `infobox.results[].movie.actors[].thumbnail` | object? | Thumbnail associated with the thing. | +| `infobox.results[].movie.actors[].thumbnail.src` | string | The served URL of the picture thumbnail. | +| `infobox.results[].movie.actors[].thumbnail.alt` | string? | The alt text for the thumbnail image. | +| `infobox.results[].movie.actors[].thumbnail.height` | int? | The height of the thumbnail. | +| `infobox.results[].movie.actors[].thumbnail.width` | int? | The width of the thumbnail. | +| `infobox.results[].movie.actors[].thumbnail.bg_color` | string? | The background color of the thumbnail. | +| `infobox.results[].movie.actors[].thumbnail.original` | string? | The original URL of the image. | +| `infobox.results[].movie.actors[].thumbnail.logo` | bool? | Whether the thumbnail is a logo. | +| `infobox.results[].movie.actors[].thumbnail.duplicated` | bool? | Whether the thumbnail is a duplicate. | +| `infobox.results[].movie.actors[].thumbnail.theme` | string? | The theme of the thumbnail (e.g., light or dark). | +| `infobox.results[].movie.actors[].email` | string? | Email address of the person. | +| `infobox.results[].movie.rating` | object? | Rating provided to the movie from various sources. | +| `infobox.results[].movie.rating.ratingValue` | number | The current value of the rating. | +| `infobox.results[].movie.rating.bestRating` | number | Best rating received. | +| `infobox.results[].movie.rating.reviewCount` | int? | The number of reviews associated with the rating. | +| `infobox.results[].movie.rating.profile` | object? | The profile associated with the rating. | +| `infobox.results[].movie.rating.profile.name` | string | The name of the profile. | +| `infobox.results[].movie.rating.profile.url` | string | The original URL where the profile is available. | +| `infobox.results[].movie.rating.profile.long_name` | string? | The long name of the profile. | +| `infobox.results[].movie.rating.profile.img` | string? | The served image URL representing the profile. | +| `infobox.results[].movie.rating.is_tripadvisor` | bool? | Whether the rating is coming from Tripadvisor. | +| `infobox.results[].movie.duration` | string? | The runtime of the movie. The format is HH:MM:SS. | +| `infobox.results[].movie.genre` | string[]? | List of genres in which the movie can be classified. | +| `infobox.results[].movie.query` | string? | The query that resulted in the movie result. | +| `infobox.results[].subtype` | string? | The infobox subtype identifier. The value is always `generic`. | +| `infobox.results[].found_in_urls` | string[]? | List of URLs where the entity was found. | +| `locations` | object? | Places of interest (POIs) relevant to location sensitive queries. | +| `locations.type` | string? | Location type identifier. The value is always `locations`. | +| `locations.results` | object[] | An aggregated list of location sensitive results. | +| `locations.results[].title` | string | The title of the web page. | +| `locations.results[].url` | string | The URL where the page is served. | +| `locations.results[].is_source_local` | bool? | Whether the result is from a local source. | +| `locations.results[].is_source_both` | bool? | Whether the result is from both local and global sources. | +| `locations.results[].description` | string? | A description for the web page. | +| `locations.results[].page_age` | string? | The page's date, based on its published or last modified date. | +| `locations.results[].page_fetched` | string? | A date representing when the web page was last fetched. | +| `locations.results[].fetched_content_timestamp` | int? | The timestamp when the content was fetched. | +| `locations.results[].profile` | object? | A profile associated with the web page. | +| `locations.results[].profile.name` | string | The name of the profile. | +| `locations.results[].profile.url` | string | The original URL where the profile is available. | +| `locations.results[].profile.long_name` | string? | The long name of the profile. | +| `locations.results[].profile.img` | string? | The served image URL representing the profile. | +| `locations.results[].language` | string? | A language classification for the web page. | +| `locations.results[].family_friendly` | bool? | Whether the web page is family friendly. | +| `locations.results[].type` | string? | Location result type identifier. The value is always `location_result`. | +| `locations.results[].provider_url` | string | The complete URL of the provider. | +| `locations.results[].coordinates` | array? | A list of coordinates associated with the location. This is a lat long represented as a floating point. | +| `locations.results[].zoom_level` | int? | The zoom level on the map. | +| `locations.results[].thumbnail` | object? | The thumbnail associated with the location. | +| `locations.results[].thumbnail.src` | string | The served URL of the picture thumbnail. | +| `locations.results[].thumbnail.alt` | string? | The alt text for the thumbnail image. | +| `locations.results[].thumbnail.height` | int? | The height of the thumbnail. | +| `locations.results[].thumbnail.width` | int? | The width of the thumbnail. | +| `locations.results[].thumbnail.bg_color` | string? | The background color of the thumbnail. | +| `locations.results[].thumbnail.original` | string? | The original URL of the image. | +| `locations.results[].thumbnail.logo` | bool? | Whether the thumbnail is a logo. | +| `locations.results[].thumbnail.duplicated` | bool? | Whether the thumbnail is a duplicate. | +| `locations.results[].thumbnail.theme` | string? | The theme of the thumbnail (e.g., light or dark). | +| `locations.results[].postal_address` | object? | The postal address associated with the location. | +| `locations.results[].postal_address.type` | string? | The type identifying a postal address. The value is always `PostalAddress`. | +| `locations.results[].postal_address.country` | string? | The country associated with the location. | +| `locations.results[].postal_address.postalCode` | string? | The postal code associated with the location. | +| `locations.results[].postal_address.streetAddress` | string? | The street address associated with the location. | +| `locations.results[].postal_address.addressRegion` | string? | The region associated with the location. This is usually a state. | +| `locations.results[].postal_address.addressLocality` | string? | The address locality or subregion associated with the location. | +| `locations.results[].postal_address.displayAddress` | string | The displayed address string. | +| `locations.results[].opening_hours` | object? | The opening hours, if it is a business, associated with the location. | +| `locations.results[].opening_hours.current_day` | object[]? | The current day opening hours. Can have two sets of opening hours. | +| `locations.results[].opening_hours.current_day[].abbr_name` | string | A short string representing the day of the week. | +| `locations.results[].opening_hours.current_day[].full_name` | string | A full string representing the day of the week. | +| `locations.results[].opening_hours.current_day[].opens` | string | A 24 hr clock time string for the opening time of the business on a particular day. | +| `locations.results[].opening_hours.current_day[].closes` | string | A 24 hr clock time string for the closing time of the business on a particular day. | +| `locations.results[].opening_hours.days` | object[][]? | The opening hours for the whole week. | +| `locations.results[].contact` | object? | The contact of the business associated with the location. | +| `locations.results[].contact.email` | string? | The email address. | +| `locations.results[].contact.telephone` | string? | The telephone number. | +| `locations.results[].price_range` | string? | A display string used to show the price classification for the business. | +| `locations.results[].rating` | object? | The ratings of the business. | +| `locations.results[].rating.ratingValue` | number | The current value of the rating. | +| `locations.results[].rating.bestRating` | number | Best rating received. | +| `locations.results[].rating.reviewCount` | int? | The number of reviews associated with the rating. | +| `locations.results[].rating.profile` | object? | The profile associated with the rating. | +| `locations.results[].rating.profile.name` | string | The name of the profile. | +| `locations.results[].rating.profile.url` | string | The original URL where the profile is available. | +| `locations.results[].rating.profile.long_name` | string? | The long name of the profile. | +| `locations.results[].rating.profile.img` | string? | The served image URL representing the profile. | +| `locations.results[].rating.is_tripadvisor` | bool? | Whether the rating is coming from Tripadvisor. | +| `locations.results[].distance` | object? | The distance of the location from the client. | +| `locations.results[].distance.value` | number | The quantity of the unit. | +| `locations.results[].distance.units` | string | The name of the unit associated with the quantity. | +| `locations.results[].profiles` | object[]? | Profiles associated with the business. | +| `locations.results[].profiles[].type` | string? | The type representing the source of data. This is usually `external`. | +| `locations.results[].profiles[].name` | string | The name of the data provider. This can be a domain. | +| `locations.results[].profiles[].url` | string | The URL where the information is coming from. | +| `locations.results[].profiles[].long_name` | string? | The long name for the data provider. | +| `locations.results[].profiles[].img` | string? | The served URL for the image data. | +| `locations.results[].reviews` | object? | Aggregated reviews from various sources relevant to the business. | +| `locations.results[].reviews.results` | object[] | A list of trip advisor reviews for the entity. | +| `locations.results[].reviews.results[].title` | string | The title of the review. | +| `locations.results[].reviews.results[].description` | string | A description seen in the review. | +| `locations.results[].reviews.results[].date` | string | The date when the review was published. | +| `locations.results[].reviews.results[].rating` | object | A rating given by the reviewer. | +| `locations.results[].reviews.results[].rating.ratingValue` | number | The current value of the rating. | +| `locations.results[].reviews.results[].rating.bestRating` | number | Best rating received. | +| `locations.results[].reviews.results[].rating.reviewCount` | int? | The number of reviews associated with the rating. | +| `locations.results[].reviews.results[].rating.profile` | object? | The profile associated with the rating. | +| `locations.results[].reviews.results[].rating.profile.name` | string | The name of the profile. | +| `locations.results[].reviews.results[].rating.profile.url` | string | The original URL where the profile is available. | +| `locations.results[].reviews.results[].rating.profile.long_name` | string? | The long name of the profile. | +| `locations.results[].reviews.results[].rating.profile.img` | string? | The served image URL representing the profile. | +| `locations.results[].reviews.results[].rating.is_tripadvisor` | bool? | Whether the rating is coming from Tripadvisor. | +| `locations.results[].reviews.results[].author` | object | The author of the review. | +| `locations.results[].reviews.results[].author.type` | string? | A type identifying a person. The value is always `person`. | +| `locations.results[].reviews.results[].author.name` | string | The name of the thing. | +| `locations.results[].reviews.results[].author.url` | string? | A URL for the thing. | +| `locations.results[].reviews.results[].author.thumbnail` | object? | Thumbnail associated with the thing. | +| `locations.results[].reviews.results[].author.thumbnail.src` | string | The served URL of the picture thumbnail. | +| `locations.results[].reviews.results[].author.thumbnail.alt` | string? | The alt text for the thumbnail image. | +| `locations.results[].reviews.results[].author.thumbnail.height` | int? | The height of the thumbnail. | +| `locations.results[].reviews.results[].author.thumbnail.width` | int? | The width of the thumbnail. | +| `locations.results[].reviews.results[].author.thumbnail.bg_color` | string? | The background color of the thumbnail. | +| `locations.results[].reviews.results[].author.thumbnail.original` | string? | The original URL of the image. | +| `locations.results[].reviews.results[].author.thumbnail.logo` | bool? | Whether the thumbnail is a logo. | +| `locations.results[].reviews.results[].author.thumbnail.duplicated` | bool? | Whether the thumbnail is a duplicate. | +| `locations.results[].reviews.results[].author.thumbnail.theme` | string? | The theme of the thumbnail (e.g., light or dark). | +| `locations.results[].reviews.results[].author.email` | string? | Email address of the person. | +| `locations.results[].reviews.results[].review_url` | string | A URL link to the page where the review can be found. | +| `locations.results[].reviews.results[].language` | string | The language of the review. | +| `locations.results[].reviews.viewMoreUrl` | string | A URL to a web page where more information on the result can be seen. | +| `locations.results[].reviews.reviews_in_foreign_language` | bool | Any reviews available in a foreign language. | +| `locations.results[].pictures` | object? | A bunch of pictures associated with the business. | +| `locations.results[].pictures.viewMoreUrl` | string? | A URL to view more pictures. | +| `locations.results[].pictures.results` | object[] | A list of thumbnail results. | +| `locations.results[].pictures.results[].src` | string | The served URL of the picture thumbnail. | +| `locations.results[].pictures.results[].alt` | string? | The alt text for the thumbnail image. | +| `locations.results[].pictures.results[].height` | int? | The height of the thumbnail. | +| `locations.results[].pictures.results[].width` | int? | The width of the thumbnail. | +| `locations.results[].pictures.results[].bg_color` | string? | The background color of the thumbnail. | +| `locations.results[].pictures.results[].original` | string? | The original URL of the image. | +| `locations.results[].pictures.results[].logo` | bool? | Whether the thumbnail is a logo. | +| `locations.results[].pictures.results[].duplicated` | bool? | Whether the thumbnail is a duplicate. | +| `locations.results[].pictures.results[].theme` | string? | The theme of the thumbnail (e.g., light or dark). | +| `locations.results[].action` | object? | An action to be taken. | +| `locations.results[].action.type` | string | The type representing the action. | +| `locations.results[].action.url` | string | A URL representing the action to be taken. | +| `locations.results[].serves_cuisine` | string[]? | A list of cuisine categories served. | +| `locations.results[].categories` | string[]? | A list of categories. | +| `locations.results[].icon_category` | string? | An icon category. | +| `locations.results[].timezone` | string? | IANA timezone identifier. | +| `locations.results[].timezone_offset` | int? | The UTC offset of the timezone. | +| `locations.results[].id` | string? | A temporary id associated with this result, which can be used to retrieve extra information about the location. It remains valid for 8 hours. | +| `locations.results[].results` | object[]? | Web results related to this location. | +| `locations.results[].results[].title` | string | The title of the web page. | +| `locations.results[].results[].url` | string | The URL where the page is served. | +| `locations.results[].results[].is_source_local` | bool? | Whether the result is from a local source. | +| `locations.results[].results[].is_source_both` | bool? | Whether the result is from both local and global sources. | +| `locations.results[].results[].description` | string? | A description for the web page. | +| `locations.results[].results[].page_age` | string? | The page's date, based on its published or last modified date. | +| `locations.results[].results[].page_fetched` | string? | A date representing when the web page was last fetched. | +| `locations.results[].results[].fetched_content_timestamp` | int? | The timestamp when the content was fetched. | +| `locations.results[].results[].profile` | object? | A profile associated with the web page. | +| `locations.results[].results[].profile.name` | string | The name of the profile. | +| `locations.results[].results[].profile.url` | string | The original URL where the profile is available. | +| `locations.results[].results[].profile.long_name` | string? | The long name of the profile. | +| `locations.results[].results[].profile.img` | string? | The served image URL representing the profile. | +| `locations.results[].results[].language` | string? | A language classification for the web page. | +| `locations.results[].results[].family_friendly` | bool? | Whether the web page is family friendly. | +| `locations.results[].results[].meta_url` | object | Aggregated information about the URL. | +| `locations.results[].results[].meta_url.scheme` | string | The protocol scheme extracted from the URL. | +| `locations.results[].results[].meta_url.netloc` | string | The network location part extracted from the URL. | +| `locations.results[].results[].meta_url.hostname` | string? | The lowercased domain name extracted from the URL. | +| `locations.results[].results[].meta_url.favicon` | string | The favicon used for the URL. | +| `locations.results[].results[].meta_url.path` | string | The hierarchical path of the URL useful as a display string. | +| `locations.provider` | object? | The provider of the location data. | +| `mixed` | object? | Preferred ranked order of search results. | +| `mixed.type` | string? | The type representing the model mixed. The value is always `mixed`. | +| `mixed.main` | object[]? | The ranking order for the main section of the search result page. | +| `mixed.main[].type` | string | The type of the result. | +| `mixed.main[].index` | int? | The 0th based index where the result should be placed. | +| `mixed.main[].all` | bool? | Whether to put all the results from the type at specific position. | +| `mixed.top` | object[]? | The ranking order for the top section of the search result page. | +| `mixed.top[].type` | string | The type of the result. | +| `mixed.top[].index` | int? | The 0th based index where the result should be placed. | +| `mixed.top[].all` | bool? | Whether to put all the results from the type at specific position. | +| `mixed.side` | object[]? | The ranking order for the side section of the search result page. | +| `mixed.side[].type` | string | The type of the result. | +| `mixed.side[].index` | int? | The 0th based index where the result should be placed. | +| `mixed.side[].all` | bool? | Whether to put all the results from the type at specific position. | +| `news` | object? | News results relevant to the query. | +| `news.type` | string? | The type of API result. The value is always `news`. | +| `news.results` | object[] | The list of news results. | +| `news.results[].title` | string | The title of the web page. | +| `news.results[].url` | string | The URL where the page is served. | +| `news.results[].is_source_local` | bool? | Whether the result is from a local source. | +| `news.results[].is_source_both` | bool? | Whether the result is from both local and global sources. | +| `news.results[].description` | string? | A description for the web page. | +| `news.results[].page_age` | string? | The page's date, based on its published or last modified date. | +| `news.results[].page_fetched` | string? | A date representing when the web page was last fetched. | +| `news.results[].fetched_content_timestamp` | int? | The timestamp when the content was fetched. | +| `news.results[].profile` | object? | A profile associated with the web page. | +| `news.results[].profile.name` | string | The name of the profile. | +| `news.results[].profile.url` | string | The original URL where the profile is available. | +| `news.results[].profile.long_name` | string? | The long name of the profile. | +| `news.results[].profile.img` | string? | The served image URL representing the profile. | +| `news.results[].language` | string? | A language classification for the web page. | +| `news.results[].family_friendly` | bool? | Whether the web page is family friendly. | +| `news.results[].meta_url` | object? | The aggregated information on the URL representing a news result. | +| `news.results[].source` | string? | The source of the news. | +| `news.results[].breaking` | bool? | Whether the news result is currently a breaking news. | +| `news.results[].is_live` | bool? | Whether the news result is currently live. | +| `news.results[].thumbnail` | object? | The thumbnail associated with the news result. | +| `news.results[].thumbnail.src` | string | The served URL of the picture thumbnail. | +| `news.results[].thumbnail.alt` | string? | The alt text for the thumbnail image. | +| `news.results[].thumbnail.height` | int? | The height of the thumbnail. | +| `news.results[].thumbnail.width` | int? | The width of the thumbnail. | +| `news.results[].thumbnail.bg_color` | string? | The background color of the thumbnail. | +| `news.results[].thumbnail.original` | string? | The original URL of the image. | +| `news.results[].thumbnail.logo` | bool? | Whether the thumbnail is a logo. | +| `news.results[].thumbnail.duplicated` | bool? | Whether the thumbnail is a duplicate. | +| `news.results[].thumbnail.theme` | string? | The theme of the thumbnail (e.g., light or dark). | +| `news.results[].age` | string? | A human-readable representation of the news article's age. For example, `2 days ago`. | +| `news.results[].extra_snippets` | string[]? | A list of extra alternate snippets for the news search result. | +| `news.results[].icons` | object[]? | Icons associated with the news result. | +| `news.results[].icons[].href` | string | | +| `news.results[].icons[].sizes` | string? | | +| `news.results[].icons[].rel` | string? | | +| `news.results[].icons[].type` | string? | | +| `news.results[].icons[].ext` | string? | | +| `news.mutated_by_goggles` | bool? | Whether the results are mutated by a goggle. | +| `videos` | object? | Videos results relevant to the query. | +| `videos.type` | string? | The type of API result. The value is always `videos`. | +| `videos.results` | object[] | The list of video results. | +| `videos.results[].type` | string? | The type of video search API result. The value is always `video_result`. | +| `videos.results[].url` | string | The source URL of the video. | +| `videos.results[].title` | string | The title of the video. | +| `videos.results[].description` | string? | The description for the video. | +| `videos.results[].age` | string? | A human-readable representation of the video's age. For example, `2 days ago`. | +| `videos.results[].page_age` | string? | The page's date, based on its published or last modified date. | +| `videos.results[].page_fetched` | string? | The ISO date time when the page was last fetched. The format is `YYYY-MM-DDTHH:MM:SSZ`. | +| `videos.results[].fetched_content_timestamp` | int? | The timestamp when the content was fetched. | +| `videos.results[].video` | object? | Metadata for the video. | +| `videos.results[].video.duration` | string? | A time string representing the duration of the video. | +| `videos.results[].video.views` | int? | The number of views of the video. | +| `videos.results[].video.creator` | string? | The creator of the video. | +| `videos.results[].video.publisher` | string? | The publisher of the video. | +| `videos.results[].video.requires_subscription` | bool? | Whether the video requires a subscription. | +| `videos.results[].video.tags` | string[]? | A list of tags relevant to the video. | +| `videos.results[].video.author` | object? | A profile associated with the video. | +| `videos.results[].video.author.name` | string | The name of the profile. | +| `videos.results[].video.author.url` | string | The original URL where the profile is available. | +| `videos.results[].video.author.long_name` | string? | The long name of the profile. | +| `videos.results[].video.author.img` | string? | The served image URL representing the profile. | +| `videos.results[].meta_url` | object? | Aggregated information on the URL associated with the video search result. | +| `videos.results[].meta_url.scheme` | string? | The protocol scheme extracted from the URL. | +| `videos.results[].meta_url.netloc` | string? | The network location part extracted from the URL. | +| `videos.results[].meta_url.hostname` | string? | The lowercased domain name extracted from the URL. | +| `videos.results[].meta_url.favicon` | string? | The favicon used for the URL. | +| `videos.results[].meta_url.path` | string? | The hierarchical path of the URL useful as a display string. | +| `videos.results[].thumbnail` | object? | The thumbnail for the video. | +| `videos.results[].thumbnail.src` | string | The served URL of the thumbnail associated with the video. | +| `videos.results[].thumbnail.original` | string? | The original URL of the thumbnail associated with the video. | +| `videos.mutated_by_goggles` | bool? | Whether the results are mutated by a goggle. | +| `web` | object? | Web results relevant to the query. | +| `web.type` | string? | A type identifying web search results. The value is always `search`. | +| `web.results` | object[] | A list of search results. | +| `web.results[].title` | string | The title of the web page. | +| `web.results[].url` | string | The URL where the page is served. | +| `web.results[].is_source_local` | bool? | Whether the result is from a local source. | +| `web.results[].is_source_both` | bool? | Whether the result is from both local and global sources. | +| `web.results[].description` | string? | A description for the web page. | +| `web.results[].page_age` | string? | The page's date, based on its published or last modified date. | +| `web.results[].page_fetched` | string? | A date representing when the web page was last fetched. | +| `web.results[].fetched_content_timestamp` | int? | The timestamp when the content was fetched. | +| `web.results[].profile` | object? | A profile associated with the web page. | +| `web.results[].profile.name` | string | The name of the profile. | +| `web.results[].profile.url` | string | The original URL where the profile is available. | +| `web.results[].profile.long_name` | string? | The long name of the profile. | +| `web.results[].profile.img` | string? | The served image URL representing the profile. | +| `web.results[].language` | string? | The main language on the web search result. | +| `web.results[].family_friendly` | bool? | Whether the web page is family friendly. | +| `web.results[].type` | string? | A type identifying a web search result. The value is always `search_result`. | +| `web.results[].subtype` | string? | A sub type identifying the web search result type. | +| `web.results[].is_live` | bool? | Whether the web search result is currently live. Default value is `false`. | +| `web.results[].deep_results` | object? | Gathered information on a web search result. | +| `web.results[].deep_results.news` | object[]? | A list of news results associated with the result. | +| `web.results[].deep_results.news[].title` | string | The title of the web page. | +| `web.results[].deep_results.news[].url` | string | The URL where the page is served. | +| `web.results[].deep_results.news[].is_source_local` | bool? | Whether the result is from a local source. | +| `web.results[].deep_results.news[].is_source_both` | bool? | Whether the result is from both local and global sources. | +| `web.results[].deep_results.news[].description` | string? | A description for the web page. | +| `web.results[].deep_results.news[].page_age` | string? | The page's date, based on its published or last modified date. | +| `web.results[].deep_results.news[].page_fetched` | string? | A date representing when the web page was last fetched. | +| `web.results[].deep_results.news[].fetched_content_timestamp` | int? | The timestamp when the content was fetched. | +| `web.results[].deep_results.news[].profile` | object? | A profile associated with the web page. | +| `web.results[].deep_results.news[].profile.name` | string | The name of the profile. | +| `web.results[].deep_results.news[].profile.url` | string | The original URL where the profile is available. | +| `web.results[].deep_results.news[].profile.long_name` | string? | The long name of the profile. | +| `web.results[].deep_results.news[].profile.img` | string? | The served image URL representing the profile. | +| `web.results[].deep_results.news[].language` | string? | A language classification for the web page. | +| `web.results[].deep_results.news[].family_friendly` | bool? | Whether the web page is family friendly. | +| `web.results[].deep_results.news[].meta_url` | object? | The aggregated information on the URL representing a news result. | +| `web.results[].deep_results.news[].source` | string? | The source of the news. | +| `web.results[].deep_results.news[].breaking` | bool? | Whether the news result is currently a breaking news. | +| `web.results[].deep_results.news[].is_live` | bool? | Whether the news result is currently live. | +| `web.results[].deep_results.news[].thumbnail` | object? | The thumbnail associated with the news result. | +| `web.results[].deep_results.news[].thumbnail.src` | string | The served URL of the picture thumbnail. | +| `web.results[].deep_results.news[].thumbnail.alt` | string? | The alt text for the thumbnail image. | +| `web.results[].deep_results.news[].thumbnail.height` | int? | The height of the thumbnail. | +| `web.results[].deep_results.news[].thumbnail.width` | int? | The width of the thumbnail. | +| `web.results[].deep_results.news[].thumbnail.bg_color` | string? | The background color of the thumbnail. | +| `web.results[].deep_results.news[].thumbnail.original` | string? | The original URL of the image. | +| `web.results[].deep_results.news[].thumbnail.logo` | bool? | Whether the thumbnail is a logo. | +| `web.results[].deep_results.news[].thumbnail.duplicated` | bool? | Whether the thumbnail is a duplicate. | +| `web.results[].deep_results.news[].thumbnail.theme` | string? | The theme of the thumbnail (e.g., light or dark). | +| `web.results[].deep_results.news[].age` | string? | A human-readable representation of the news article's age. For example, `2 days ago`. | +| `web.results[].deep_results.news[].extra_snippets` | string[]? | A list of extra alternate snippets for the news search result. | +| `web.results[].deep_results.news[].icons` | object[]? | Icons associated with the news result. | +| `web.results[].deep_results.news[].icons[].href` | string | | +| `web.results[].deep_results.news[].icons[].sizes` | string? | | +| `web.results[].deep_results.news[].icons[].rel` | string? | | +| `web.results[].deep_results.news[].icons[].type` | string? | | +| `web.results[].deep_results.news[].icons[].ext` | string? | | +| `web.results[].deep_results.buttons` | object[]? | A list of buttoned results associated with the result. | +| `web.results[].deep_results.buttons[].type` | string? | A type identifying button result. The value is always `button_result`. | +| `web.results[].deep_results.buttons[].title` | string | The title of the result. | +| `web.results[].deep_results.buttons[].url` | string | The URL for the button result. | +| `web.results[].deep_results.videos` | object[]? | Videos associated with the result. | +| `web.results[].deep_results.videos[].title` | string | The title of the web page. | +| `web.results[].deep_results.videos[].url` | string | The URL where the page is served. | +| `web.results[].deep_results.videos[].is_source_local` | bool? | Whether the result is from a local source. | +| `web.results[].deep_results.videos[].is_source_both` | bool? | Whether the result is from both local and global sources. | +| `web.results[].deep_results.videos[].description` | string? | A description for the web page. | +| `web.results[].deep_results.videos[].page_age` | string? | The page's date, based on its published or last modified date. | +| `web.results[].deep_results.videos[].page_fetched` | string? | A date representing when the web page was last fetched. | +| `web.results[].deep_results.videos[].fetched_content_timestamp` | int? | The timestamp when the content was fetched. | +| `web.results[].deep_results.videos[].profile` | object? | A profile associated with the web page. | +| `web.results[].deep_results.videos[].profile.name` | string | The name of the profile. | +| `web.results[].deep_results.videos[].profile.url` | string | The original URL where the profile is available. | +| `web.results[].deep_results.videos[].profile.long_name` | string? | The long name of the profile. | +| `web.results[].deep_results.videos[].profile.img` | string? | The served image URL representing the profile. | +| `web.results[].deep_results.videos[].language` | string? | A language classification for the web page. | +| `web.results[].deep_results.videos[].family_friendly` | bool? | Whether the web page is family friendly. | +| `web.results[].deep_results.videos[].type` | string? | The type identifying the video result. The value is always `video_result`. | +| `web.results[].deep_results.videos[].video` | object | Meta data for the video. | +| `web.results[].deep_results.videos[].video.duration` | string? | A time string representing the duration of the video. The format can be HH:MM:SS or MM:SS. | +| `web.results[].deep_results.videos[].video.views` | string? | The number of views of the video. | +| `web.results[].deep_results.videos[].video.creator` | string? | The creator of the video. | +| `web.results[].deep_results.videos[].video.publisher` | string? | The publisher of the video. | +| `web.results[].deep_results.videos[].video.thumbnail` | object? | A thumbnail associated with the video. | +| `web.results[].deep_results.videos[].video.thumbnail.src` | string | The served URL of the picture thumbnail. | +| `web.results[].deep_results.videos[].video.thumbnail.alt` | string? | The alt text for the thumbnail image. | +| `web.results[].deep_results.videos[].video.thumbnail.height` | int? | The height of the thumbnail. | +| `web.results[].deep_results.videos[].video.thumbnail.width` | int? | The width of the thumbnail. | +| `web.results[].deep_results.videos[].video.thumbnail.bg_color` | string? | The background color of the thumbnail. | +| `web.results[].deep_results.videos[].video.thumbnail.original` | string? | The original URL of the image. | +| `web.results[].deep_results.videos[].video.thumbnail.logo` | bool? | Whether the thumbnail is a logo. | +| `web.results[].deep_results.videos[].video.thumbnail.duplicated` | bool? | Whether the thumbnail is a duplicate. | +| `web.results[].deep_results.videos[].video.thumbnail.theme` | string? | The theme of the thumbnail (e.g., light or dark). | +| `web.results[].deep_results.videos[].video.tags` | string[]? | A list of tags associated with the video. | +| `web.results[].deep_results.videos[].video.author` | object? | Author of the video. | +| `web.results[].deep_results.videos[].video.author.name` | string | The name of the profile. | +| `web.results[].deep_results.videos[].video.author.url` | string | The original URL where the profile is available. | +| `web.results[].deep_results.videos[].video.author.long_name` | string? | The long name of the profile. | +| `web.results[].deep_results.videos[].video.author.img` | string? | The served image URL representing the profile. | +| `web.results[].deep_results.videos[].video.requires_subscription` | bool? | Whether the video requires a subscription to watch. | +| `web.results[].deep_results.videos[].meta_url` | object? | Aggregated information on the URL. | +| `web.results[].deep_results.videos[].meta_url.scheme` | string | The protocol scheme extracted from the URL. | +| `web.results[].deep_results.videos[].meta_url.netloc` | string | The network location part extracted from the URL. | +| `web.results[].deep_results.videos[].meta_url.hostname` | string? | The lowercased domain name extracted from the URL. | +| `web.results[].deep_results.videos[].meta_url.favicon` | string | The favicon used for the URL. | +| `web.results[].deep_results.videos[].meta_url.path` | string | The hierarchical path of the URL useful as a display string. | +| `web.results[].deep_results.videos[].thumbnail` | object? | The thumbnail of the video. | +| `web.results[].deep_results.videos[].thumbnail.src` | string | The served URL of the picture thumbnail. | +| `web.results[].deep_results.videos[].thumbnail.alt` | string? | The alt text for the thumbnail image. | +| `web.results[].deep_results.videos[].thumbnail.height` | int? | The height of the thumbnail. | +| `web.results[].deep_results.videos[].thumbnail.width` | int? | The width of the thumbnail. | +| `web.results[].deep_results.videos[].thumbnail.bg_color` | string? | The background color of the thumbnail. | +| `web.results[].deep_results.videos[].thumbnail.original` | string? | The original URL of the image. | +| `web.results[].deep_results.videos[].thumbnail.logo` | bool? | Whether the thumbnail is a logo. | +| `web.results[].deep_results.videos[].thumbnail.duplicated` | bool? | Whether the thumbnail is a duplicate. | +| `web.results[].deep_results.videos[].thumbnail.theme` | string? | The theme of the thumbnail (e.g., light or dark). | +| `web.results[].deep_results.videos[].age` | string? | A human-readable representation of the video's age. For example, `2 days ago`. | +| `web.results[].deep_results.videos[].publisher` | string? | The publisher of the video. | +| `web.results[].deep_results.images` | object[]? | Images associated with the result. | +| `web.results[].deep_results.images[].thumbnail` | object | The thumbnail associated with the image. | +| `web.results[].deep_results.images[].thumbnail.src` | string | The served URL of the picture thumbnail. | +| `web.results[].deep_results.images[].thumbnail.alt` | string? | The alt text for the thumbnail image. | +| `web.results[].deep_results.images[].thumbnail.height` | int? | The height of the thumbnail. | +| `web.results[].deep_results.images[].thumbnail.width` | int? | The width of the thumbnail. | +| `web.results[].deep_results.images[].thumbnail.bg_color` | string? | The background color of the thumbnail. | +| `web.results[].deep_results.images[].thumbnail.original` | string? | The original URL of the image. | +| `web.results[].deep_results.images[].thumbnail.logo` | bool? | Whether the thumbnail is a logo. | +| `web.results[].deep_results.images[].thumbnail.duplicated` | bool? | Whether the thumbnail is a duplicate. | +| `web.results[].deep_results.images[].thumbnail.theme` | string? | The theme of the thumbnail (e.g., light or dark). | +| `web.results[].deep_results.images[].url` | string? | The URL of the image. | +| `web.results[].deep_results.images[].properties` | object? | Metadata on the image. | +| `web.results[].deep_results.images[].properties.url` | string | The original image URL. | +| `web.results[].deep_results.images[].properties.resized` | string | The URL for a better quality resized image. | +| `web.results[].deep_results.images[].properties.placeholder` | string | The placeholder image URL. | +| `web.results[].deep_results.images[].properties.height` | int? | The image height. | +| `web.results[].deep_results.images[].properties.width` | int? | The image width. | +| `web.results[].deep_results.images[].properties.format` | string? | The image format. | +| `web.results[].deep_results.images[].properties.content_size` | string? | The image size. | +| `web.results[].schemas` | any[]? | A list of schemas (structured data) extracted from the page. The schemas try to follow schema.org and will return anything we can extract from the HTML that can fit into these models. | +| `web.results[].meta_url` | object? | Aggregated information on the URL associated with the web search result. | +| `web.results[].thumbnail` | object? | The thumbnail of the web search result. | +| `web.results[].thumbnail.src` | string | The served URL of the picture thumbnail. | +| `web.results[].thumbnail.alt` | string? | The alt text for the thumbnail image. | +| `web.results[].thumbnail.height` | int? | The height of the thumbnail. | +| `web.results[].thumbnail.width` | int? | The width of the thumbnail. | +| `web.results[].thumbnail.bg_color` | string? | The background color of the thumbnail. | +| `web.results[].thumbnail.original` | string? | The original URL of the image. | +| `web.results[].thumbnail.logo` | bool? | Whether the thumbnail is a logo. | +| `web.results[].thumbnail.duplicated` | bool? | Whether the thumbnail is a duplicate. | +| `web.results[].thumbnail.theme` | string? | The theme of the thumbnail (e.g., light or dark). | +| `web.results[].age` | string? | A human-readable representation of the web search result's age. For example, `2 days ago`. | +| `web.results[].location` | object? | The location details if the query relates to a restaurant. | +| `web.results[].location.title` | string | The title of the web page. | +| `web.results[].location.url` | string | The URL where the page is served. | +| `web.results[].location.is_source_local` | bool? | Whether the result is from a local source. | +| `web.results[].location.is_source_both` | bool? | Whether the result is from both local and global sources. | +| `web.results[].location.description` | string? | A description for the web page. | +| `web.results[].location.page_age` | string? | The page's date, based on its published or last modified date. | +| `web.results[].location.page_fetched` | string? | A date representing when the web page was last fetched. | +| `web.results[].location.fetched_content_timestamp` | int? | The timestamp when the content was fetched. | +| `web.results[].location.profile` | object? | A profile associated with the web page. | +| `web.results[].location.profile.name` | string | The name of the profile. | +| `web.results[].location.profile.url` | string | The original URL where the profile is available. | +| `web.results[].location.profile.long_name` | string? | The long name of the profile. | +| `web.results[].location.profile.img` | string? | The served image URL representing the profile. | +| `web.results[].location.language` | string? | A language classification for the web page. | +| `web.results[].location.family_friendly` | bool? | Whether the web page is family friendly. | +| `web.results[].location.type` | string? | Location result type identifier. The value is always `location_result`. | +| `web.results[].location.provider_url` | string | The complete URL of the provider. | +| `web.results[].location.coordinates` | array? | A list of coordinates associated with the location. This is a lat long represented as a floating point. | +| `web.results[].location.zoom_level` | int? | The zoom level on the map. | +| `web.results[].location.thumbnail` | object? | The thumbnail associated with the location. | +| `web.results[].location.thumbnail.src` | string | The served URL of the picture thumbnail. | +| `web.results[].location.thumbnail.alt` | string? | The alt text for the thumbnail image. | +| `web.results[].location.thumbnail.height` | int? | The height of the thumbnail. | +| `web.results[].location.thumbnail.width` | int? | The width of the thumbnail. | +| `web.results[].location.thumbnail.bg_color` | string? | The background color of the thumbnail. | +| `web.results[].location.thumbnail.original` | string? | The original URL of the image. | +| `web.results[].location.thumbnail.logo` | bool? | Whether the thumbnail is a logo. | +| `web.results[].location.thumbnail.duplicated` | bool? | Whether the thumbnail is a duplicate. | +| `web.results[].location.thumbnail.theme` | string? | The theme of the thumbnail (e.g., light or dark). | +| `web.results[].location.postal_address` | object? | The postal address associated with the location. | +| `web.results[].location.postal_address.type` | string? | The type identifying a postal address. The value is always `PostalAddress`. | +| `web.results[].location.postal_address.country` | string? | The country associated with the location. | +| `web.results[].location.postal_address.postalCode` | string? | The postal code associated with the location. | +| `web.results[].location.postal_address.streetAddress` | string? | The street address associated with the location. | +| `web.results[].location.postal_address.addressRegion` | string? | The region associated with the location. This is usually a state. | +| `web.results[].location.postal_address.addressLocality` | string? | The address locality or subregion associated with the location. | +| `web.results[].location.postal_address.displayAddress` | string | The displayed address string. | +| `web.results[].location.opening_hours` | object? | The opening hours, if it is a business, associated with the location. | +| `web.results[].location.opening_hours.current_day` | object[]? | The current day opening hours. Can have two sets of opening hours. | +| `web.results[].location.opening_hours.current_day[].abbr_name` | string | A short string representing the day of the week. | +| `web.results[].location.opening_hours.current_day[].full_name` | string | A full string representing the day of the week. | +| `web.results[].location.opening_hours.current_day[].opens` | string | A 24 hr clock time string for the opening time of the business on a particular day. | +| `web.results[].location.opening_hours.current_day[].closes` | string | A 24 hr clock time string for the closing time of the business on a particular day. | +| `web.results[].location.opening_hours.days` | object[][]? | The opening hours for the whole week. | +| `web.results[].location.contact` | object? | The contact of the business associated with the location. | +| `web.results[].location.contact.email` | string? | The email address. | +| `web.results[].location.contact.telephone` | string? | The telephone number. | +| `web.results[].location.price_range` | string? | A display string used to show the price classification for the business. | +| `web.results[].location.rating` | object? | The ratings of the business. | +| `web.results[].location.rating.ratingValue` | number | The current value of the rating. | +| `web.results[].location.rating.bestRating` | number | Best rating received. | +| `web.results[].location.rating.reviewCount` | int? | The number of reviews associated with the rating. | +| `web.results[].location.rating.profile` | object? | The profile associated with the rating. | +| `web.results[].location.rating.profile.name` | string | The name of the profile. | +| `web.results[].location.rating.profile.url` | string | The original URL where the profile is available. | +| `web.results[].location.rating.profile.long_name` | string? | The long name of the profile. | +| `web.results[].location.rating.profile.img` | string? | The served image URL representing the profile. | +| `web.results[].location.rating.is_tripadvisor` | bool? | Whether the rating is coming from Tripadvisor. | +| `web.results[].location.distance` | object? | The distance of the location from the client. | +| `web.results[].location.distance.value` | number | The quantity of the unit. | +| `web.results[].location.distance.units` | string | The name of the unit associated with the quantity. | +| `web.results[].location.profiles` | object[]? | Profiles associated with the business. | +| `web.results[].location.profiles[].type` | string? | The type representing the source of data. This is usually `external`. | +| `web.results[].location.profiles[].name` | string | The name of the data provider. This can be a domain. | +| `web.results[].location.profiles[].url` | string | The URL where the information is coming from. | +| `web.results[].location.profiles[].long_name` | string? | The long name for the data provider. | +| `web.results[].location.profiles[].img` | string? | The served URL for the image data. | +| `web.results[].location.reviews` | object? | Aggregated reviews from various sources relevant to the business. | +| `web.results[].location.reviews.results` | object[] | A list of trip advisor reviews for the entity. | +| `web.results[].location.reviews.results[].title` | string | The title of the review. | +| `web.results[].location.reviews.results[].description` | string | A description seen in the review. | +| `web.results[].location.reviews.results[].date` | string | The date when the review was published. | +| `web.results[].location.reviews.results[].rating` | object | A rating given by the reviewer. | +| `web.results[].location.reviews.results[].rating.ratingValue` | number | The current value of the rating. | +| `web.results[].location.reviews.results[].rating.bestRating` | number | Best rating received. | +| `web.results[].location.reviews.results[].rating.reviewCount` | int? | The number of reviews associated with the rating. | +| `web.results[].location.reviews.results[].rating.profile` | object? | The profile associated with the rating. | +| `web.results[].location.reviews.results[].rating.profile.name` | string | The name of the profile. | +| `web.results[].location.reviews.results[].rating.profile.url` | string | The original URL where the profile is available. | +| `web.results[].location.reviews.results[].rating.profile.long_name` | string? | The long name of the profile. | +| `web.results[].location.reviews.results[].rating.profile.img` | string? | The served image URL representing the profile. | +| `web.results[].location.reviews.results[].rating.is_tripadvisor` | bool? | Whether the rating is coming from Tripadvisor. | +| `web.results[].location.reviews.results[].author` | object | The author of the review. | +| `web.results[].location.reviews.results[].author.type` | string? | A type identifying a person. The value is always `person`. | +| `web.results[].location.reviews.results[].author.name` | string | The name of the thing. | +| `web.results[].location.reviews.results[].author.url` | string? | A URL for the thing. | +| `web.results[].location.reviews.results[].author.thumbnail` | object? | Thumbnail associated with the thing. | +| `web.results[].location.reviews.results[].author.thumbnail.src` | string | The served URL of the picture thumbnail. | +| `web.results[].location.reviews.results[].author.thumbnail.alt` | string? | The alt text for the thumbnail image. | +| `web.results[].location.reviews.results[].author.thumbnail.height` | int? | The height of the thumbnail. | +| `web.results[].location.reviews.results[].author.thumbnail.width` | int? | The width of the thumbnail. | +| `web.results[].location.reviews.results[].author.thumbnail.bg_color` | string? | The background color of the thumbnail. | +| `web.results[].location.reviews.results[].author.thumbnail.original` | string? | The original URL of the image. | +| `web.results[].location.reviews.results[].author.thumbnail.logo` | bool? | Whether the thumbnail is a logo. | +| `web.results[].location.reviews.results[].author.thumbnail.duplicated` | bool? | Whether the thumbnail is a duplicate. | +| `web.results[].location.reviews.results[].author.thumbnail.theme` | string? | The theme of the thumbnail (e.g., light or dark). | +| `web.results[].location.reviews.results[].author.email` | string? | Email address of the person. | +| `web.results[].location.reviews.results[].review_url` | string | A URL link to the page where the review can be found. | +| `web.results[].location.reviews.results[].language` | string | The language of the review. | +| `web.results[].location.reviews.viewMoreUrl` | string | A URL to a web page where more information on the result can be seen. | +| `web.results[].location.reviews.reviews_in_foreign_language` | bool | Any reviews available in a foreign language. | +| `web.results[].location.pictures` | object? | A bunch of pictures associated with the business. | +| `web.results[].location.pictures.viewMoreUrl` | string? | A URL to view more pictures. | +| `web.results[].location.pictures.results` | object[] | A list of thumbnail results. | +| `web.results[].location.pictures.results[].src` | string | The served URL of the picture thumbnail. | +| `web.results[].location.pictures.results[].alt` | string? | The alt text for the thumbnail image. | +| `web.results[].location.pictures.results[].height` | int? | The height of the thumbnail. | +| `web.results[].location.pictures.results[].width` | int? | The width of the thumbnail. | +| `web.results[].location.pictures.results[].bg_color` | string? | The background color of the thumbnail. | +| `web.results[].location.pictures.results[].original` | string? | The original URL of the image. | +| `web.results[].location.pictures.results[].logo` | bool? | Whether the thumbnail is a logo. | +| `web.results[].location.pictures.results[].duplicated` | bool? | Whether the thumbnail is a duplicate. | +| `web.results[].location.pictures.results[].theme` | string? | The theme of the thumbnail (e.g., light or dark). | +| `web.results[].location.action` | object? | An action to be taken. | +| `web.results[].location.action.type` | string | The type representing the action. | +| `web.results[].location.action.url` | string | A URL representing the action to be taken. | +| `web.results[].location.serves_cuisine` | string[]? | A list of cuisine categories served. | +| `web.results[].location.categories` | string[]? | A list of categories. | +| `web.results[].location.icon_category` | string? | An icon category. | +| `web.results[].location.timezone` | string? | IANA timezone identifier. | +| `web.results[].location.timezone_offset` | int? | The UTC offset of the timezone. | +| `web.results[].location.id` | string? | A temporary id associated with this result, which can be used to retrieve extra information about the location. It remains valid for 8 hours. | +| `web.results[].location.results` | object[]? | Web results related to this location. | +| `web.results[].location.results[].title` | string | The title of the web page. | +| `web.results[].location.results[].url` | string | The URL where the page is served. | +| `web.results[].location.results[].is_source_local` | bool? | Whether the result is from a local source. | +| `web.results[].location.results[].is_source_both` | bool? | Whether the result is from both local and global sources. | +| `web.results[].location.results[].description` | string? | A description for the web page. | +| `web.results[].location.results[].page_age` | string? | The page's date, based on its published or last modified date. | +| `web.results[].location.results[].page_fetched` | string? | A date representing when the web page was last fetched. | +| `web.results[].location.results[].fetched_content_timestamp` | int? | The timestamp when the content was fetched. | +| `web.results[].location.results[].profile` | object? | A profile associated with the web page. | +| `web.results[].location.results[].profile.name` | string | The name of the profile. | +| `web.results[].location.results[].profile.url` | string | The original URL where the profile is available. | +| `web.results[].location.results[].profile.long_name` | string? | The long name of the profile. | +| `web.results[].location.results[].profile.img` | string? | The served image URL representing the profile. | +| `web.results[].location.results[].language` | string? | A language classification for the web page. | +| `web.results[].location.results[].family_friendly` | bool? | Whether the web page is family friendly. | +| `web.results[].location.results[].meta_url` | object | Aggregated information about the URL. | +| `web.results[].location.results[].meta_url.scheme` | string | The protocol scheme extracted from the URL. | +| `web.results[].location.results[].meta_url.netloc` | string | The network location part extracted from the URL. | +| `web.results[].location.results[].meta_url.hostname` | string? | The lowercased domain name extracted from the URL. | +| `web.results[].location.results[].meta_url.favicon` | string | The favicon used for the URL. | +| `web.results[].location.results[].meta_url.path` | string | The hierarchical path of the URL useful as a display string. | +| `web.results[].restaurant` | object? | Deprecated. Use `location` instead. | +| `web.results[].restaurant.title` | string | The title of the web page. | +| `web.results[].restaurant.url` | string | The URL where the page is served. | +| `web.results[].restaurant.is_source_local` | bool? | Whether the result is from a local source. | +| `web.results[].restaurant.is_source_both` | bool? | Whether the result is from both local and global sources. | +| `web.results[].restaurant.description` | string? | A description for the web page. | +| `web.results[].restaurant.page_age` | string? | The page's date, based on its published or last modified date. | +| `web.results[].restaurant.page_fetched` | string? | A date representing when the web page was last fetched. | +| `web.results[].restaurant.fetched_content_timestamp` | int? | The timestamp when the content was fetched. | +| `web.results[].restaurant.profile` | object? | A profile associated with the web page. | +| `web.results[].restaurant.profile.name` | string | The name of the profile. | +| `web.results[].restaurant.profile.url` | string | The original URL where the profile is available. | +| `web.results[].restaurant.profile.long_name` | string? | The long name of the profile. | +| `web.results[].restaurant.profile.img` | string? | The served image URL representing the profile. | +| `web.results[].restaurant.language` | string? | A language classification for the web page. | +| `web.results[].restaurant.family_friendly` | bool? | Whether the web page is family friendly. | +| `web.results[].restaurant.type` | string? | Location result type identifier. The value is always `location_result`. | +| `web.results[].restaurant.provider_url` | string | The complete URL of the provider. | +| `web.results[].restaurant.coordinates` | array? | A list of coordinates associated with the location. This is a lat long represented as a floating point. | +| `web.results[].restaurant.zoom_level` | int? | The zoom level on the map. | +| `web.results[].restaurant.thumbnail` | object? | The thumbnail associated with the location. | +| `web.results[].restaurant.thumbnail.src` | string | The served URL of the picture thumbnail. | +| `web.results[].restaurant.thumbnail.alt` | string? | The alt text for the thumbnail image. | +| `web.results[].restaurant.thumbnail.height` | int? | The height of the thumbnail. | +| `web.results[].restaurant.thumbnail.width` | int? | The width of the thumbnail. | +| `web.results[].restaurant.thumbnail.bg_color` | string? | The background color of the thumbnail. | +| `web.results[].restaurant.thumbnail.original` | string? | The original URL of the image. | +| `web.results[].restaurant.thumbnail.logo` | bool? | Whether the thumbnail is a logo. | +| `web.results[].restaurant.thumbnail.duplicated` | bool? | Whether the thumbnail is a duplicate. | +| `web.results[].restaurant.thumbnail.theme` | string? | The theme of the thumbnail (e.g., light or dark). | +| `web.results[].restaurant.postal_address` | object? | The postal address associated with the location. | +| `web.results[].restaurant.postal_address.type` | string? | The type identifying a postal address. The value is always `PostalAddress`. | +| `web.results[].restaurant.postal_address.country` | string? | The country associated with the location. | +| `web.results[].restaurant.postal_address.postalCode` | string? | The postal code associated with the location. | +| `web.results[].restaurant.postal_address.streetAddress` | string? | The street address associated with the location. | +| `web.results[].restaurant.postal_address.addressRegion` | string? | The region associated with the location. This is usually a state. | +| `web.results[].restaurant.postal_address.addressLocality` | string? | The address locality or subregion associated with the location. | +| `web.results[].restaurant.postal_address.displayAddress` | string | The displayed address string. | +| `web.results[].restaurant.opening_hours` | object? | The opening hours, if it is a business, associated with the location. | +| `web.results[].restaurant.opening_hours.current_day` | object[]? | The current day opening hours. Can have two sets of opening hours. | +| `web.results[].restaurant.opening_hours.current_day[].abbr_name` | string | A short string representing the day of the week. | +| `web.results[].restaurant.opening_hours.current_day[].full_name` | string | A full string representing the day of the week. | +| `web.results[].restaurant.opening_hours.current_day[].opens` | string | A 24 hr clock time string for the opening time of the business on a particular day. | +| `web.results[].restaurant.opening_hours.current_day[].closes` | string | A 24 hr clock time string for the closing time of the business on a particular day. | +| `web.results[].restaurant.opening_hours.days` | object[][]? | The opening hours for the whole week. | +| `web.results[].restaurant.contact` | object? | The contact of the business associated with the location. | +| `web.results[].restaurant.contact.email` | string? | The email address. | +| `web.results[].restaurant.contact.telephone` | string? | The telephone number. | +| `web.results[].restaurant.price_range` | string? | A display string used to show the price classification for the business. | +| `web.results[].restaurant.rating` | object? | The ratings of the business. | +| `web.results[].restaurant.rating.ratingValue` | number | The current value of the rating. | +| `web.results[].restaurant.rating.bestRating` | number | Best rating received. | +| `web.results[].restaurant.rating.reviewCount` | int? | The number of reviews associated with the rating. | +| `web.results[].restaurant.rating.profile` | object? | The profile associated with the rating. | +| `web.results[].restaurant.rating.profile.name` | string | The name of the profile. | +| `web.results[].restaurant.rating.profile.url` | string | The original URL where the profile is available. | +| `web.results[].restaurant.rating.profile.long_name` | string? | The long name of the profile. | +| `web.results[].restaurant.rating.profile.img` | string? | The served image URL representing the profile. | +| `web.results[].restaurant.rating.is_tripadvisor` | bool? | Whether the rating is coming from Tripadvisor. | +| `web.results[].restaurant.distance` | object? | The distance of the location from the client. | +| `web.results[].restaurant.distance.value` | number | The quantity of the unit. | +| `web.results[].restaurant.distance.units` | string | The name of the unit associated with the quantity. | +| `web.results[].restaurant.profiles` | object[]? | Profiles associated with the business. | +| `web.results[].restaurant.profiles[].type` | string? | The type representing the source of data. This is usually `external`. | +| `web.results[].restaurant.profiles[].name` | string | The name of the data provider. This can be a domain. | +| `web.results[].restaurant.profiles[].url` | string | The URL where the information is coming from. | +| `web.results[].restaurant.profiles[].long_name` | string? | The long name for the data provider. | +| `web.results[].restaurant.profiles[].img` | string? | The served URL for the image data. | +| `web.results[].restaurant.reviews` | object? | Aggregated reviews from various sources relevant to the business. | +| `web.results[].restaurant.reviews.results` | object[] | A list of trip advisor reviews for the entity. | +| `web.results[].restaurant.reviews.results[].title` | string | The title of the review. | +| `web.results[].restaurant.reviews.results[].description` | string | A description seen in the review. | +| `web.results[].restaurant.reviews.results[].date` | string | The date when the review was published. | +| `web.results[].restaurant.reviews.results[].rating` | object | A rating given by the reviewer. | +| `web.results[].restaurant.reviews.results[].rating.ratingValue` | number | The current value of the rating. | +| `web.results[].restaurant.reviews.results[].rating.bestRating` | number | Best rating received. | +| `web.results[].restaurant.reviews.results[].rating.reviewCount` | int? | The number of reviews associated with the rating. | +| `web.results[].restaurant.reviews.results[].rating.profile` | object? | The profile associated with the rating. | +| `web.results[].restaurant.reviews.results[].rating.profile.name` | string | The name of the profile. | +| `web.results[].restaurant.reviews.results[].rating.profile.url` | string | The original URL where the profile is available. | +| `web.results[].restaurant.reviews.results[].rating.profile.long_name` | string? | The long name of the profile. | +| `web.results[].restaurant.reviews.results[].rating.profile.img` | string? | The served image URL representing the profile. | +| `web.results[].restaurant.reviews.results[].rating.is_tripadvisor` | bool? | Whether the rating is coming from Tripadvisor. | +| `web.results[].restaurant.reviews.results[].author` | object | The author of the review. | +| `web.results[].restaurant.reviews.results[].author.type` | string? | A type identifying a person. The value is always `person`. | +| `web.results[].restaurant.reviews.results[].author.name` | string | The name of the thing. | +| `web.results[].restaurant.reviews.results[].author.url` | string? | A URL for the thing. | +| `web.results[].restaurant.reviews.results[].author.thumbnail` | object? | Thumbnail associated with the thing. | +| `web.results[].restaurant.reviews.results[].author.thumbnail.src` | string | The served URL of the picture thumbnail. | +| `web.results[].restaurant.reviews.results[].author.thumbnail.alt` | string? | The alt text for the thumbnail image. | +| `web.results[].restaurant.reviews.results[].author.thumbnail.height` | int? | The height of the thumbnail. | +| `web.results[].restaurant.reviews.results[].author.thumbnail.width` | int? | The width of the thumbnail. | +| `web.results[].restaurant.reviews.results[].author.thumbnail.bg_color` | string? | The background color of the thumbnail. | +| `web.results[].restaurant.reviews.results[].author.thumbnail.original` | string? | The original URL of the image. | +| `web.results[].restaurant.reviews.results[].author.thumbnail.logo` | bool? | Whether the thumbnail is a logo. | +| `web.results[].restaurant.reviews.results[].author.thumbnail.duplicated` | bool? | Whether the thumbnail is a duplicate. | +| `web.results[].restaurant.reviews.results[].author.thumbnail.theme` | string? | The theme of the thumbnail (e.g., light or dark). | +| `web.results[].restaurant.reviews.results[].author.email` | string? | Email address of the person. | +| `web.results[].restaurant.reviews.results[].review_url` | string | A URL link to the page where the review can be found. | +| `web.results[].restaurant.reviews.results[].language` | string | The language of the review. | +| `web.results[].restaurant.reviews.viewMoreUrl` | string | A URL to a web page where more information on the result can be seen. | +| `web.results[].restaurant.reviews.reviews_in_foreign_language` | bool | Any reviews available in a foreign language. | +| `web.results[].restaurant.pictures` | object? | A bunch of pictures associated with the business. | +| `web.results[].restaurant.pictures.viewMoreUrl` | string? | A URL to view more pictures. | +| `web.results[].restaurant.pictures.results` | object[] | A list of thumbnail results. | +| `web.results[].restaurant.pictures.results[].src` | string | The served URL of the picture thumbnail. | +| `web.results[].restaurant.pictures.results[].alt` | string? | The alt text for the thumbnail image. | +| `web.results[].restaurant.pictures.results[].height` | int? | The height of the thumbnail. | +| `web.results[].restaurant.pictures.results[].width` | int? | The width of the thumbnail. | +| `web.results[].restaurant.pictures.results[].bg_color` | string? | The background color of the thumbnail. | +| `web.results[].restaurant.pictures.results[].original` | string? | The original URL of the image. | +| `web.results[].restaurant.pictures.results[].logo` | bool? | Whether the thumbnail is a logo. | +| `web.results[].restaurant.pictures.results[].duplicated` | bool? | Whether the thumbnail is a duplicate. | +| `web.results[].restaurant.pictures.results[].theme` | string? | The theme of the thumbnail (e.g., light or dark). | +| `web.results[].restaurant.action` | object? | An action to be taken. | +| `web.results[].restaurant.action.type` | string | The type representing the action. | +| `web.results[].restaurant.action.url` | string | A URL representing the action to be taken. | +| `web.results[].restaurant.serves_cuisine` | string[]? | A list of cuisine categories served. | +| `web.results[].restaurant.categories` | string[]? | A list of categories. | +| `web.results[].restaurant.icon_category` | string? | An icon category. | +| `web.results[].restaurant.timezone` | string? | IANA timezone identifier. | +| `web.results[].restaurant.timezone_offset` | int? | The UTC offset of the timezone. | +| `web.results[].restaurant.id` | string? | A temporary id associated with this result, which can be used to retrieve extra information about the location. It remains valid for 8 hours. | +| `web.results[].restaurant.results` | object[]? | Web results related to this location. | +| `web.results[].restaurant.results[].title` | string | The title of the web page. | +| `web.results[].restaurant.results[].url` | string | The URL where the page is served. | +| `web.results[].restaurant.results[].is_source_local` | bool? | Whether the result is from a local source. | +| `web.results[].restaurant.results[].is_source_both` | bool? | Whether the result is from both local and global sources. | +| `web.results[].restaurant.results[].description` | string? | A description for the web page. | +| `web.results[].restaurant.results[].page_age` | string? | The page's date, based on its published or last modified date. | +| `web.results[].restaurant.results[].page_fetched` | string? | A date representing when the web page was last fetched. | +| `web.results[].restaurant.results[].fetched_content_timestamp` | int? | The timestamp when the content was fetched. | +| `web.results[].restaurant.results[].profile` | object? | A profile associated with the web page. | +| `web.results[].restaurant.results[].profile.name` | string | The name of the profile. | +| `web.results[].restaurant.results[].profile.url` | string | The original URL where the profile is available. | +| `web.results[].restaurant.results[].profile.long_name` | string? | The long name of the profile. | +| `web.results[].restaurant.results[].profile.img` | string? | The served image URL representing the profile. | +| `web.results[].restaurant.results[].language` | string? | A language classification for the web page. | +| `web.results[].restaurant.results[].family_friendly` | bool? | Whether the web page is family friendly. | +| `web.results[].restaurant.results[].meta_url` | object | Aggregated information about the URL. | +| `web.results[].restaurant.results[].meta_url.scheme` | string | The protocol scheme extracted from the URL. | +| `web.results[].restaurant.results[].meta_url.netloc` | string | The network location part extracted from the URL. | +| `web.results[].restaurant.results[].meta_url.hostname` | string? | The lowercased domain name extracted from the URL. | +| `web.results[].restaurant.results[].meta_url.favicon` | string | The favicon used for the URL. | +| `web.results[].restaurant.results[].meta_url.path` | string | The hierarchical path of the URL useful as a display string. | +| `web.results[].video` | object? | The video associated with the web search result. | +| `web.results[].video.duration` | string? | A time string representing the duration of the video. The format can be HH:MM:SS or MM:SS. | +| `web.results[].video.views` | string? | The number of views of the video. | +| `web.results[].video.creator` | string? | The creator of the video. | +| `web.results[].video.publisher` | string? | The publisher of the video. | +| `web.results[].video.thumbnail` | object? | A thumbnail associated with the video. | +| `web.results[].video.thumbnail.src` | string | The served URL of the picture thumbnail. | +| `web.results[].video.thumbnail.alt` | string? | The alt text for the thumbnail image. | +| `web.results[].video.thumbnail.height` | int? | The height of the thumbnail. | +| `web.results[].video.thumbnail.width` | int? | The width of the thumbnail. | +| `web.results[].video.thumbnail.bg_color` | string? | The background color of the thumbnail. | +| `web.results[].video.thumbnail.original` | string? | The original URL of the image. | +| `web.results[].video.thumbnail.logo` | bool? | Whether the thumbnail is a logo. | +| `web.results[].video.thumbnail.duplicated` | bool? | Whether the thumbnail is a duplicate. | +| `web.results[].video.thumbnail.theme` | string? | The theme of the thumbnail (e.g., light or dark). | +| `web.results[].video.tags` | string[]? | A list of tags associated with the video. | +| `web.results[].video.author` | object? | Author of the video. | +| `web.results[].video.author.name` | string | The name of the profile. | +| `web.results[].video.author.url` | string | The original URL where the profile is available. | +| `web.results[].video.author.long_name` | string? | The long name of the profile. | +| `web.results[].video.author.img` | string? | The served image URL representing the profile. | +| `web.results[].video.requires_subscription` | bool? | Whether the video requires a subscription to watch. | +| `web.results[].movie` | object? | The movie associated with the web search result. | +| `web.results[].movie.name` | string? | Name of the movie. | +| `web.results[].movie.description` | string? | A short plot summary for the movie. | +| `web.results[].movie.url` | string? | A URL serving a movie profile page. | +| `web.results[].movie.thumbnail` | object? | A thumbnail for a movie poster. | +| `web.results[].movie.thumbnail.src` | string | The served URL of the picture thumbnail. | +| `web.results[].movie.thumbnail.alt` | string? | The alt text for the thumbnail image. | +| `web.results[].movie.thumbnail.height` | int? | The height of the thumbnail. | +| `web.results[].movie.thumbnail.width` | int? | The width of the thumbnail. | +| `web.results[].movie.thumbnail.bg_color` | string? | The background color of the thumbnail. | +| `web.results[].movie.thumbnail.original` | string? | The original URL of the image. | +| `web.results[].movie.thumbnail.logo` | bool? | Whether the thumbnail is a logo. | +| `web.results[].movie.thumbnail.duplicated` | bool? | Whether the thumbnail is a duplicate. | +| `web.results[].movie.thumbnail.theme` | string? | The theme of the thumbnail (e.g., light or dark). | +| `web.results[].movie.release` | string? | The release date for the movie. | +| `web.results[].movie.directors` | object[]? | A list of people responsible for directing the movie. | +| `web.results[].movie.directors[].type` | string? | A type identifying a person. The value is always `person`. | +| `web.results[].movie.directors[].name` | string | The name of the thing. | +| `web.results[].movie.directors[].url` | string? | A URL for the thing. | +| `web.results[].movie.directors[].thumbnail` | object? | Thumbnail associated with the thing. | +| `web.results[].movie.directors[].thumbnail.src` | string | The served URL of the picture thumbnail. | +| `web.results[].movie.directors[].thumbnail.alt` | string? | The alt text for the thumbnail image. | +| `web.results[].movie.directors[].thumbnail.height` | int? | The height of the thumbnail. | +| `web.results[].movie.directors[].thumbnail.width` | int? | The width of the thumbnail. | +| `web.results[].movie.directors[].thumbnail.bg_color` | string? | The background color of the thumbnail. | +| `web.results[].movie.directors[].thumbnail.original` | string? | The original URL of the image. | +| `web.results[].movie.directors[].thumbnail.logo` | bool? | Whether the thumbnail is a logo. | +| `web.results[].movie.directors[].thumbnail.duplicated` | bool? | Whether the thumbnail is a duplicate. | +| `web.results[].movie.directors[].thumbnail.theme` | string? | The theme of the thumbnail (e.g., light or dark). | +| `web.results[].movie.directors[].email` | string? | Email address of the person. | +| `web.results[].movie.actors` | object[]? | A list of actors in the movie. | +| `web.results[].movie.actors[].type` | string? | A type identifying a person. The value is always `person`. | +| `web.results[].movie.actors[].name` | string | The name of the thing. | +| `web.results[].movie.actors[].url` | string? | A URL for the thing. | +| `web.results[].movie.actors[].thumbnail` | object? | Thumbnail associated with the thing. | +| `web.results[].movie.actors[].thumbnail.src` | string | The served URL of the picture thumbnail. | +| `web.results[].movie.actors[].thumbnail.alt` | string? | The alt text for the thumbnail image. | +| `web.results[].movie.actors[].thumbnail.height` | int? | The height of the thumbnail. | +| `web.results[].movie.actors[].thumbnail.width` | int? | The width of the thumbnail. | +| `web.results[].movie.actors[].thumbnail.bg_color` | string? | The background color of the thumbnail. | +| `web.results[].movie.actors[].thumbnail.original` | string? | The original URL of the image. | +| `web.results[].movie.actors[].thumbnail.logo` | bool? | Whether the thumbnail is a logo. | +| `web.results[].movie.actors[].thumbnail.duplicated` | bool? | Whether the thumbnail is a duplicate. | +| `web.results[].movie.actors[].thumbnail.theme` | string? | The theme of the thumbnail (e.g., light or dark). | +| `web.results[].movie.actors[].email` | string? | Email address of the person. | +| `web.results[].movie.rating` | object? | Rating provided to the movie from various sources. | +| `web.results[].movie.rating.ratingValue` | number | The current value of the rating. | +| `web.results[].movie.rating.bestRating` | number | Best rating received. | +| `web.results[].movie.rating.reviewCount` | int? | The number of reviews associated with the rating. | +| `web.results[].movie.rating.profile` | object? | The profile associated with the rating. | +| `web.results[].movie.rating.profile.name` | string | The name of the profile. | +| `web.results[].movie.rating.profile.url` | string | The original URL where the profile is available. | +| `web.results[].movie.rating.profile.long_name` | string? | The long name of the profile. | +| `web.results[].movie.rating.profile.img` | string? | The served image URL representing the profile. | +| `web.results[].movie.rating.is_tripadvisor` | bool? | Whether the rating is coming from Tripadvisor. | +| `web.results[].movie.duration` | string? | The runtime of the movie. The format is HH:MM:SS. | +| `web.results[].movie.genre` | string[]? | List of genres in which the movie can be classified. | +| `web.results[].movie.query` | string? | The query that resulted in the movie result. | +| `web.results[].faq` | object? | Any frequently asked questions associated with the web search result. | +| `web.results[].faq.items` | object[] | A list of question/answer pairs. | +| `web.results[].faq.items[].question` | string | The question being asked. | +| `web.results[].faq.items[].answer` | string | The answer to the question. | +| `web.results[].faq.items[].title` | string | The title of the post. | +| `web.results[].faq.items[].url` | string | The URL pointing to the post. | +| `web.results[].faq.items[].meta_url` | object? | Aggregated information about the URL. | +| `web.results[].faq.items[].meta_url.scheme` | string | The protocol scheme extracted from the URL. | +| `web.results[].faq.items[].meta_url.netloc` | string | The network location part extracted from the URL. | +| `web.results[].faq.items[].meta_url.hostname` | string? | The lowercased domain name extracted from the URL. | +| `web.results[].faq.items[].meta_url.favicon` | string | The favicon used for the URL. | +| `web.results[].faq.items[].meta_url.path` | string | The hierarchical path of the URL useful as a display string. | +| `web.results[].qa` | object? | Any question answer information associated with the web search result page. | +| `web.results[].qa.question` | string | The question that is being asked. | +| `web.results[].qa.answer` | object | An answer to the question. | +| `web.results[].qa.answer.text` | string | The main content of the answer. | +| `web.results[].qa.answer.author` | string? | The name of the author of the answer. | +| `web.results[].qa.answer.upvoteCount` | int? | Number of upvotes on the answer. | +| `web.results[].qa.answer.downvoteCount` | int? | The number of downvotes on the answer. | +| `web.results[].book` | object? | Any book information associated with the web search result page. | +| `web.results[].book.title` | string | The title of the book. | +| `web.results[].book.author` | object[] | The author of the book. | +| `web.results[].book.author[].type` | string? | A type identifying a person. The value is always `person`. | +| `web.results[].book.author[].name` | string | The name of the thing. | +| `web.results[].book.author[].url` | string? | A URL for the thing. | +| `web.results[].book.author[].thumbnail` | object? | Thumbnail associated with the thing. | +| `web.results[].book.author[].thumbnail.src` | string | The served URL of the picture thumbnail. | +| `web.results[].book.author[].thumbnail.alt` | string? | The alt text for the thumbnail image. | +| `web.results[].book.author[].thumbnail.height` | int? | The height of the thumbnail. | +| `web.results[].book.author[].thumbnail.width` | int? | The width of the thumbnail. | +| `web.results[].book.author[].thumbnail.bg_color` | string? | The background color of the thumbnail. | +| `web.results[].book.author[].thumbnail.original` | string? | The original URL of the image. | +| `web.results[].book.author[].thumbnail.logo` | bool? | Whether the thumbnail is a logo. | +| `web.results[].book.author[].thumbnail.duplicated` | bool? | Whether the thumbnail is a duplicate. | +| `web.results[].book.author[].thumbnail.theme` | string? | The theme of the thumbnail (e.g., light or dark). | +| `web.results[].book.author[].email` | string? | Email address of the person. | +| `web.results[].book.date` | string? | The publishing date of the book. | +| `web.results[].book.price` | object? | The price of the book. | +| `web.results[].book.price.price` | string | The price value in a given currency. | +| `web.results[].book.price.priceCurrency` | string | The currency of the price value. | +| `web.results[].book.pages` | int? | The number of pages in the book. | +| `web.results[].book.publisher` | object? | The publisher of the book. | +| `web.results[].book.publisher.type` | string? | A type identifying a person. The value is always `person`. | +| `web.results[].book.publisher.name` | string | The name of the thing. | +| `web.results[].book.publisher.url` | string? | A URL for the thing. | +| `web.results[].book.publisher.thumbnail` | object? | Thumbnail associated with the thing. | +| `web.results[].book.publisher.thumbnail.src` | string | The served URL of the picture thumbnail. | +| `web.results[].book.publisher.thumbnail.alt` | string? | The alt text for the thumbnail image. | +| `web.results[].book.publisher.thumbnail.height` | int? | The height of the thumbnail. | +| `web.results[].book.publisher.thumbnail.width` | int? | The width of the thumbnail. | +| `web.results[].book.publisher.thumbnail.bg_color` | string? | The background color of the thumbnail. | +| `web.results[].book.publisher.thumbnail.original` | string? | The original URL of the image. | +| `web.results[].book.publisher.thumbnail.logo` | bool? | Whether the thumbnail is a logo. | +| `web.results[].book.publisher.thumbnail.duplicated` | bool? | Whether the thumbnail is a duplicate. | +| `web.results[].book.publisher.thumbnail.theme` | string? | The theme of the thumbnail (e.g., light or dark). | +| `web.results[].book.publisher.email` | string? | Email address of the person. | +| `web.results[].book.rating` | object? | A gathered rating from different sources associated with the book. | +| `web.results[].book.rating.ratingValue` | number | The current value of the rating. | +| `web.results[].book.rating.bestRating` | number | Best rating received. | +| `web.results[].book.rating.reviewCount` | int? | The number of reviews associated with the rating. | +| `web.results[].book.rating.profile` | object? | The profile associated with the rating. | +| `web.results[].book.rating.profile.name` | string | The name of the profile. | +| `web.results[].book.rating.profile.url` | string | The original URL where the profile is available. | +| `web.results[].book.rating.profile.long_name` | string? | The long name of the profile. | +| `web.results[].book.rating.profile.img` | string? | The served image URL representing the profile. | +| `web.results[].book.rating.is_tripadvisor` | bool? | Whether the rating is coming from Tripadvisor. | +| `web.results[].rating` | object? | Rating found for the web search result page. | +| `web.results[].rating.ratingValue` | number | The current value of the rating. | +| `web.results[].rating.bestRating` | number | Best rating received. | +| `web.results[].rating.reviewCount` | int? | The number of reviews associated with the rating. | +| `web.results[].rating.profile` | object? | The profile associated with the rating. | +| `web.results[].rating.profile.name` | string | The name of the profile. | +| `web.results[].rating.profile.url` | string | The original URL where the profile is available. | +| `web.results[].rating.profile.long_name` | string? | The long name of the profile. | +| `web.results[].rating.profile.img` | string? | The served image URL representing the profile. | +| `web.results[].rating.is_tripadvisor` | bool? | Whether the rating is coming from Tripadvisor. | +| `web.results[].article` | object? | An article found for the web search result page. | +| `web.results[].article.author` | object[]? | The author of the article. | +| `web.results[].article.author[].type` | string? | A type identifying a person. The value is always `person`. | +| `web.results[].article.author[].name` | string | The name of the thing. | +| `web.results[].article.author[].url` | string? | A URL for the thing. | +| `web.results[].article.author[].thumbnail` | object? | Thumbnail associated with the thing. | +| `web.results[].article.author[].thumbnail.src` | string | The served URL of the picture thumbnail. | +| `web.results[].article.author[].thumbnail.alt` | string? | The alt text for the thumbnail image. | +| `web.results[].article.author[].thumbnail.height` | int? | The height of the thumbnail. | +| `web.results[].article.author[].thumbnail.width` | int? | The width of the thumbnail. | +| `web.results[].article.author[].thumbnail.bg_color` | string? | The background color of the thumbnail. | +| `web.results[].article.author[].thumbnail.original` | string? | The original URL of the image. | +| `web.results[].article.author[].thumbnail.logo` | bool? | Whether the thumbnail is a logo. | +| `web.results[].article.author[].thumbnail.duplicated` | bool? | Whether the thumbnail is a duplicate. | +| `web.results[].article.author[].thumbnail.theme` | string? | The theme of the thumbnail (e.g., light or dark). | +| `web.results[].article.author[].email` | string? | Email address of the person. | +| `web.results[].article.date` | string? | The date when the article was published. | +| `web.results[].article.publisher` | object? | The name of the publisher for the article. | +| `web.results[].article.publisher.type` | string? | A type string identifying an organization. The value is always `organization`. | +| `web.results[].article.publisher.name` | string | The name of the thing. | +| `web.results[].article.publisher.url` | string? | A URL for the thing. | +| `web.results[].article.publisher.thumbnail` | object? | Thumbnail associated with the thing. | +| `web.results[].article.publisher.thumbnail.src` | string | The served URL of the picture thumbnail. | +| `web.results[].article.publisher.thumbnail.alt` | string? | The alt text for the thumbnail image. | +| `web.results[].article.publisher.thumbnail.height` | int? | The height of the thumbnail. | +| `web.results[].article.publisher.thumbnail.width` | int? | The width of the thumbnail. | +| `web.results[].article.publisher.thumbnail.bg_color` | string? | The background color of the thumbnail. | +| `web.results[].article.publisher.thumbnail.original` | string? | The original URL of the image. | +| `web.results[].article.publisher.thumbnail.logo` | bool? | Whether the thumbnail is a logo. | +| `web.results[].article.publisher.thumbnail.duplicated` | bool? | Whether the thumbnail is a duplicate. | +| `web.results[].article.publisher.thumbnail.theme` | string? | The theme of the thumbnail (e.g., light or dark). | +| `web.results[].article.publisher.contact_points` | object[]? | A list of contact points for the organization. | +| `web.results[].article.publisher.contact_points[].type` | string? | A type string identifying a contact point. The value is always `contact_point`. | +| `web.results[].article.publisher.contact_points[].name` | string | The name of the thing. | +| `web.results[].article.publisher.contact_points[].url` | string? | A URL for the thing. | +| `web.results[].article.publisher.contact_points[].thumbnail` | object? | Thumbnail associated with the thing. | +| `web.results[].article.publisher.contact_points[].thumbnail.src` | string | The served URL of the picture thumbnail. | +| `web.results[].article.publisher.contact_points[].thumbnail.alt` | string? | The alt text for the thumbnail image. | +| `web.results[].article.publisher.contact_points[].thumbnail.height` | int? | The height of the thumbnail. | +| `web.results[].article.publisher.contact_points[].thumbnail.width` | int? | The width of the thumbnail. | +| `web.results[].article.publisher.contact_points[].thumbnail.bg_color` | string? | The background color of the thumbnail. | +| `web.results[].article.publisher.contact_points[].thumbnail.original` | string? | The original URL of the image. | +| `web.results[].article.publisher.contact_points[].thumbnail.logo` | bool? | Whether the thumbnail is a logo. | +| `web.results[].article.publisher.contact_points[].thumbnail.duplicated` | bool? | Whether the thumbnail is a duplicate. | +| `web.results[].article.publisher.contact_points[].thumbnail.theme` | string? | The theme of the thumbnail (e.g., light or dark). | +| `web.results[].article.publisher.contact_points[].telephone` | string? | The telephone number of the entity. | +| `web.results[].article.publisher.contact_points[].email` | string? | The email address of the entity. | +| `web.results[].article.thumbnail` | object? | A thumbnail associated with the article. | +| `web.results[].article.thumbnail.src` | string | The served URL of the picture thumbnail. | +| `web.results[].article.thumbnail.alt` | string? | The alt text for the thumbnail image. | +| `web.results[].article.thumbnail.height` | int? | The height of the thumbnail. | +| `web.results[].article.thumbnail.width` | int? | The width of the thumbnail. | +| `web.results[].article.thumbnail.bg_color` | string? | The background color of the thumbnail. | +| `web.results[].article.thumbnail.original` | string? | The original URL of the image. | +| `web.results[].article.thumbnail.logo` | bool? | Whether the thumbnail is a logo. | +| `web.results[].article.thumbnail.duplicated` | bool? | Whether the thumbnail is a duplicate. | +| `web.results[].article.thumbnail.theme` | string? | The theme of the thumbnail (e.g., light or dark). | +| `web.results[].article.isAccessibleForFree` | bool? | Whether the article is free to read or is behind a paywall. | +| `web.results[].product` | any? | The main product and a review that is found on the web search result page. | +| `web.results[].product.type` | string? | A string representing a product type. The value is always `Product`. | +| `web.results[].product.name` | string | The name of the product. | +| `web.results[].product.url` | string? | The URL of the product page. | +| `web.results[].product.category` | string? | The category of the product. | +| `web.results[].product.price` | string | The price of the product. | +| `web.results[].product.thumbnail` | object | A thumbnail associated with the product. | +| `web.results[].product.thumbnail.src` | string | The served URL of the picture thumbnail. | +| `web.results[].product.thumbnail.alt` | string? | The alt text for the thumbnail image. | +| `web.results[].product.thumbnail.height` | int? | The height of the thumbnail. | +| `web.results[].product.thumbnail.width` | int? | The width of the thumbnail. | +| `web.results[].product.thumbnail.bg_color` | string? | The background color of the thumbnail. | +| `web.results[].product.thumbnail.original` | string? | The original URL of the image. | +| `web.results[].product.thumbnail.logo` | bool? | Whether the thumbnail is a logo. | +| `web.results[].product.thumbnail.duplicated` | bool? | Whether the thumbnail is a duplicate. | +| `web.results[].product.thumbnail.theme` | string? | The theme of the thumbnail (e.g., light or dark). | +| `web.results[].product.description` | string? | The description of the product. | +| `web.results[].product.offers` | object[]? | A list of offers available on the product. | +| `web.results[].product.offers[].url` | string | The URL where the offer can be found. | +| `web.results[].product.offers[].priceCurrency` | string | The currency in which the offer is made. | +| `web.results[].product.offers[].price` | string | The price of the product currently on offer. | +| `web.results[].product.rating` | object? | A rating associated with the product. | +| `web.results[].product.rating.ratingValue` | number | The current value of the rating. | +| `web.results[].product.rating.bestRating` | number | Best rating received. | +| `web.results[].product.rating.reviewCount` | int? | The number of reviews associated with the rating. | +| `web.results[].product.rating.profile` | object? | The profile associated with the rating. | +| `web.results[].product.rating.profile.name` | string | The name of the profile. | +| `web.results[].product.rating.profile.url` | string | The original URL where the profile is available. | +| `web.results[].product.rating.profile.long_name` | string? | The long name of the profile. | +| `web.results[].product.rating.profile.img` | string? | The served image URL representing the profile. | +| `web.results[].product.rating.is_tripadvisor` | bool? | Whether the rating is coming from Tripadvisor. | +| `web.results[].product.gtin` | string? | A Global Trade Item Number (GTIN) for the product. | +| `web.results[].product.gtin8` | string? | The GTIN-8 (EAN/UCC-8) code of the product. | +| `web.results[].product.gtin12` | string? | The GTIN-12 (UPC) code of the product. | +| `web.results[].product.gtin13` | string? | The GTIN-13 (EAN/ISBN-13) code of the product. | +| `web.results[].product.gtin14` | string? | The GTIN-14 code of the product. | +| `web.results[].product_cluster` | any[]? | A list of products and reviews that are found on the web search result page. | +| `web.results[].product_cluster[].type` | string? | A string representing a product type. The value is always `Product`. | +| `web.results[].product_cluster[].name` | string | The name of the product. | +| `web.results[].product_cluster[].url` | string? | The URL of the product page. | +| `web.results[].product_cluster[].category` | string? | The category of the product. | +| `web.results[].product_cluster[].price` | string | The price of the product. | +| `web.results[].product_cluster[].thumbnail` | object | A thumbnail associated with the product. | +| `web.results[].product_cluster[].thumbnail.src` | string | The served URL of the picture thumbnail. | +| `web.results[].product_cluster[].thumbnail.alt` | string? | The alt text for the thumbnail image. | +| `web.results[].product_cluster[].thumbnail.height` | int? | The height of the thumbnail. | +| `web.results[].product_cluster[].thumbnail.width` | int? | The width of the thumbnail. | +| `web.results[].product_cluster[].thumbnail.bg_color` | string? | The background color of the thumbnail. | +| `web.results[].product_cluster[].thumbnail.original` | string? | The original URL of the image. | +| `web.results[].product_cluster[].thumbnail.logo` | bool? | Whether the thumbnail is a logo. | +| `web.results[].product_cluster[].thumbnail.duplicated` | bool? | Whether the thumbnail is a duplicate. | +| `web.results[].product_cluster[].thumbnail.theme` | string? | The theme of the thumbnail (e.g., light or dark). | +| `web.results[].product_cluster[].description` | string? | The description of the product. | +| `web.results[].product_cluster[].offers` | object[]? | A list of offers available on the product. | +| `web.results[].product_cluster[].offers[].url` | string | The URL where the offer can be found. | +| `web.results[].product_cluster[].offers[].priceCurrency` | string | The currency in which the offer is made. | +| `web.results[].product_cluster[].offers[].price` | string | The price of the product currently on offer. | +| `web.results[].product_cluster[].rating` | object? | A rating associated with the product. | +| `web.results[].product_cluster[].rating.ratingValue` | number | The current value of the rating. | +| `web.results[].product_cluster[].rating.bestRating` | number | Best rating received. | +| `web.results[].product_cluster[].rating.reviewCount` | int? | The number of reviews associated with the rating. | +| `web.results[].product_cluster[].rating.profile` | object? | The profile associated with the rating. | +| `web.results[].product_cluster[].rating.profile.name` | string | The name of the profile. | +| `web.results[].product_cluster[].rating.profile.url` | string | The original URL where the profile is available. | +| `web.results[].product_cluster[].rating.profile.long_name` | string? | The long name of the profile. | +| `web.results[].product_cluster[].rating.profile.img` | string? | The served image URL representing the profile. | +| `web.results[].product_cluster[].rating.is_tripadvisor` | bool? | Whether the rating is coming from Tripadvisor. | +| `web.results[].product_cluster[].gtin` | string? | A Global Trade Item Number (GTIN) for the product. | +| `web.results[].product_cluster[].gtin8` | string? | The GTIN-8 (EAN/UCC-8) code of the product. | +| `web.results[].product_cluster[].gtin12` | string? | The GTIN-12 (UPC) code of the product. | +| `web.results[].product_cluster[].gtin13` | string? | The GTIN-13 (EAN/ISBN-13) code of the product. | +| `web.results[].product_cluster[].gtin14` | string? | The GTIN-14 code of the product. | +| `web.results[].cluster_type` | string? | A type representing a cluster. The value can be product_cluster. | +| `web.results[].cluster` | object[]? | A list of web search results. | +| `web.results[].cluster[].title` | string | The title of the web page. | +| `web.results[].cluster[].url` | string | The URL where the page is served. | +| `web.results[].cluster[].is_source_local` | bool? | Whether the result is from a local source. | +| `web.results[].cluster[].is_source_both` | bool? | Whether the result is from both local and global sources. | +| `web.results[].cluster[].description` | string? | A description for the web page. | +| `web.results[].cluster[].page_age` | string? | The page's date, based on its published or last modified date. | +| `web.results[].cluster[].page_fetched` | string? | A date representing when the web page was last fetched. | +| `web.results[].cluster[].fetched_content_timestamp` | int? | The timestamp when the content was fetched. | +| `web.results[].cluster[].profile` | object? | A profile associated with the web page. | +| `web.results[].cluster[].profile.name` | string | The name of the profile. | +| `web.results[].cluster[].profile.url` | string | The original URL where the profile is available. | +| `web.results[].cluster[].profile.long_name` | string? | The long name of the profile. | +| `web.results[].cluster[].profile.img` | string? | The served image URL representing the profile. | +| `web.results[].cluster[].language` | string? | A language classification for the web page. | +| `web.results[].cluster[].family_friendly` | bool? | Whether the web page is family friendly. | +| `web.results[].creative_work` | object? | Aggregated information on the creative work found on the web search result. | +| `web.results[].creative_work.name` | string | The name of the creative work. | +| `web.results[].creative_work.rating` | object? | A rating that is given to the creative work. | +| `web.results[].creative_work.rating.ratingValue` | number | The current value of the rating. | +| `web.results[].creative_work.rating.bestRating` | number | Best rating received. | +| `web.results[].creative_work.rating.reviewCount` | int? | The number of reviews associated with the rating. | +| `web.results[].creative_work.rating.profile` | object? | The profile associated with the rating. | +| `web.results[].creative_work.rating.profile.name` | string | The name of the profile. | +| `web.results[].creative_work.rating.profile.url` | string | The original URL where the profile is available. | +| `web.results[].creative_work.rating.profile.long_name` | string? | The long name of the profile. | +| `web.results[].creative_work.rating.profile.img` | string? | The served image URL representing the profile. | +| `web.results[].creative_work.rating.is_tripadvisor` | bool? | Whether the rating is coming from Tripadvisor. | +| `web.results[].creative_work.thumbnail` | object | A thumbnail associated with the creative work. | +| `web.results[].creative_work.thumbnail.src` | string | The served URL of the picture thumbnail. | +| `web.results[].creative_work.thumbnail.alt` | string? | The alt text for the thumbnail image. | +| `web.results[].creative_work.thumbnail.height` | int? | The height of the thumbnail. | +| `web.results[].creative_work.thumbnail.width` | int? | The width of the thumbnail. | +| `web.results[].creative_work.thumbnail.bg_color` | string? | The background color of the thumbnail. | +| `web.results[].creative_work.thumbnail.original` | string? | The original URL of the image. | +| `web.results[].creative_work.thumbnail.logo` | bool? | Whether the thumbnail is a logo. | +| `web.results[].creative_work.thumbnail.duplicated` | bool? | Whether the thumbnail is a duplicate. | +| `web.results[].creative_work.thumbnail.theme` | string? | The theme of the thumbnail (e.g., light or dark). | +| `web.results[].music_recording` | object? | Aggregated information on music recording found on the web search result. | +| `web.results[].music_recording.name` | string | The name of the song or album. | +| `web.results[].music_recording.rating` | object? | The rating of the music. | +| `web.results[].music_recording.rating.ratingValue` | number | The current value of the rating. | +| `web.results[].music_recording.rating.bestRating` | number | Best rating received. | +| `web.results[].music_recording.rating.reviewCount` | int? | The number of reviews associated with the rating. | +| `web.results[].music_recording.rating.profile` | object? | The profile associated with the rating. | +| `web.results[].music_recording.rating.profile.name` | string | The name of the profile. | +| `web.results[].music_recording.rating.profile.url` | string | The original URL where the profile is available. | +| `web.results[].music_recording.rating.profile.long_name` | string? | The long name of the profile. | +| `web.results[].music_recording.rating.profile.img` | string? | The served image URL representing the profile. | +| `web.results[].music_recording.rating.is_tripadvisor` | bool? | Whether the rating is coming from Tripadvisor. | +| `web.results[].music_recording.thumbnail` | object? | A thumbnail associated with the music. | +| `web.results[].music_recording.thumbnail.src` | string | The served URL of the picture thumbnail. | +| `web.results[].music_recording.thumbnail.alt` | string? | The alt text for the thumbnail image. | +| `web.results[].music_recording.thumbnail.height` | int? | The height of the thumbnail. | +| `web.results[].music_recording.thumbnail.width` | int? | The width of the thumbnail. | +| `web.results[].music_recording.thumbnail.bg_color` | string? | The background color of the thumbnail. | +| `web.results[].music_recording.thumbnail.original` | string? | The original URL of the image. | +| `web.results[].music_recording.thumbnail.logo` | bool? | Whether the thumbnail is a logo. | +| `web.results[].music_recording.thumbnail.duplicated` | bool? | Whether the thumbnail is a duplicate. | +| `web.results[].music_recording.thumbnail.theme` | string? | The theme of the thumbnail (e.g., light or dark). | +| `web.results[].review` | object? | Aggregated information on the review found on the web search result. | +| `web.results[].review.type` | string? | A string representing review type. This is always `Review`. | +| `web.results[].review.name` | string | The review title for the review. | +| `web.results[].review.thumbnail` | object | The thumbnail associated with the reviewer. | +| `web.results[].review.thumbnail.src` | string | The served URL of the picture thumbnail. | +| `web.results[].review.thumbnail.alt` | string? | The alt text for the thumbnail image. | +| `web.results[].review.thumbnail.height` | int? | The height of the thumbnail. | +| `web.results[].review.thumbnail.width` | int? | The width of the thumbnail. | +| `web.results[].review.thumbnail.bg_color` | string? | The background color of the thumbnail. | +| `web.results[].review.thumbnail.original` | string? | The original URL of the image. | +| `web.results[].review.thumbnail.logo` | bool? | Whether the thumbnail is a logo. | +| `web.results[].review.thumbnail.duplicated` | bool? | Whether the thumbnail is a duplicate. | +| `web.results[].review.thumbnail.theme` | string? | The theme of the thumbnail (e.g., light or dark). | +| `web.results[].review.description` | string | A description of the review (the text of the review itself). | +| `web.results[].review.rating` | object | The ratings associated with the review. | +| `web.results[].review.rating.ratingValue` | number | The current value of the rating. | +| `web.results[].review.rating.bestRating` | number | Best rating received. | +| `web.results[].review.rating.reviewCount` | int? | The number of reviews associated with the rating. | +| `web.results[].review.rating.profile` | object? | The profile associated with the rating. | +| `web.results[].review.rating.profile.name` | string | The name of the profile. | +| `web.results[].review.rating.profile.url` | string | The original URL where the profile is available. | +| `web.results[].review.rating.profile.long_name` | string? | The long name of the profile. | +| `web.results[].review.rating.profile.img` | string? | The served image URL representing the profile. | +| `web.results[].review.rating.is_tripadvisor` | bool? | Whether the rating is coming from Tripadvisor. | +| `web.results[].recipe` | object? | Aggregated information on a recipe found on the web search result page. | +| `web.results[].recipe.title` | string | The title of the recipe. | +| `web.results[].recipe.description` | string | The description of the recipe. | +| `web.results[].recipe.thumbnail` | object | A thumbnail associated with the recipe. | +| `web.results[].recipe.thumbnail.src` | string | The served URL of the picture thumbnail. | +| `web.results[].recipe.thumbnail.alt` | string? | The alt text for the thumbnail image. | +| `web.results[].recipe.thumbnail.height` | int? | The height of the thumbnail. | +| `web.results[].recipe.thumbnail.width` | int? | The width of the thumbnail. | +| `web.results[].recipe.thumbnail.bg_color` | string? | The background color of the thumbnail. | +| `web.results[].recipe.thumbnail.original` | string? | The original URL of the image. | +| `web.results[].recipe.thumbnail.logo` | bool? | Whether the thumbnail is a logo. | +| `web.results[].recipe.thumbnail.duplicated` | bool? | Whether the thumbnail is a duplicate. | +| `web.results[].recipe.thumbnail.theme` | string? | The theme of the thumbnail (e.g., light or dark). | +| `web.results[].recipe.url` | string | The URL of the web page where the recipe was found. | +| `web.results[].recipe.domain` | string | The domain of the web page where the recipe was found. | +| `web.results[].recipe.favicon` | string | The URL for the favicon of the web page where the recipe was found. | +| `web.results[].recipe.time` | string? | The total time required to cook the recipe. | +| `web.results[].recipe.prep_time` | string? | The preparation time for the recipe. | +| `web.results[].recipe.cook_time` | string? | The cooking time for the recipe. | +| `web.results[].recipe.ingredients` | string? | Ingredients required for the recipe. | +| `web.results[].recipe.instructions` | object[]? | List of instructions for the recipe. | +| `web.results[].recipe.instructions[].text` | string | The how to text. | +| `web.results[].recipe.instructions[].name` | string? | A name for the how to. | +| `web.results[].recipe.instructions[].url` | string? | A URL associated with the how to. | +| `web.results[].recipe.instructions[].image` | string[]? | A list of image URLs associated with the how to. | +| `web.results[].recipe.servings` | int? | How many people the recipe serves. | +| `web.results[].recipe.calories` | int? | Calorie count for the recipe. | +| `web.results[].recipe.publisher` | string? | The publisher of the recipe. | +| `web.results[].recipe.rating` | object? | Aggregated information on the ratings associated with the recipe. | +| `web.results[].recipe.rating.ratingValue` | number | The current value of the rating. | +| `web.results[].recipe.rating.bestRating` | number | Best rating received. | +| `web.results[].recipe.rating.reviewCount` | int? | The number of reviews associated with the rating. | +| `web.results[].recipe.rating.profile` | object? | The profile associated with the rating. | +| `web.results[].recipe.rating.profile.name` | string | The name of the profile. | +| `web.results[].recipe.rating.profile.url` | string | The original URL where the profile is available. | +| `web.results[].recipe.rating.profile.long_name` | string? | The long name of the profile. | +| `web.results[].recipe.rating.profile.img` | string? | The served image URL representing the profile. | +| `web.results[].recipe.rating.is_tripadvisor` | bool? | Whether the rating is coming from Tripadvisor. | +| `web.results[].recipe.recipeCategory` | string? | The category of the recipe. | +| `web.results[].recipe.recipeCuisine` | string? | The cuisine classification for the recipe. | +| `web.results[].recipe.video` | object? | Aggregated information on the cooking video associated with the recipe. | +| `web.results[].recipe.video.duration` | string? | A time string representing the duration of the video. The format can be HH:MM:SS or MM:SS. | +| `web.results[].recipe.video.views` | string? | The number of views of the video. | +| `web.results[].recipe.video.creator` | string? | The creator of the video. | +| `web.results[].recipe.video.publisher` | string? | The publisher of the video. | +| `web.results[].recipe.video.thumbnail` | object? | A thumbnail associated with the video. | +| `web.results[].recipe.video.thumbnail.src` | string | The served URL of the picture thumbnail. | +| `web.results[].recipe.video.thumbnail.alt` | string? | The alt text for the thumbnail image. | +| `web.results[].recipe.video.thumbnail.height` | int? | The height of the thumbnail. | +| `web.results[].recipe.video.thumbnail.width` | int? | The width of the thumbnail. | +| `web.results[].recipe.video.thumbnail.bg_color` | string? | The background color of the thumbnail. | +| `web.results[].recipe.video.thumbnail.original` | string? | The original URL of the image. | +| `web.results[].recipe.video.thumbnail.logo` | bool? | Whether the thumbnail is a logo. | +| `web.results[].recipe.video.thumbnail.duplicated` | bool? | Whether the thumbnail is a duplicate. | +| `web.results[].recipe.video.thumbnail.theme` | string? | The theme of the thumbnail (e.g., light or dark). | +| `web.results[].recipe.video.tags` | string[]? | A list of tags associated with the video. | +| `web.results[].recipe.video.author` | object? | Author of the video. | +| `web.results[].recipe.video.author.name` | string | The name of the profile. | +| `web.results[].recipe.video.author.url` | string | The original URL where the profile is available. | +| `web.results[].recipe.video.author.long_name` | string? | The long name of the profile. | +| `web.results[].recipe.video.author.img` | string? | The served image URL representing the profile. | +| `web.results[].recipe.video.requires_subscription` | bool? | Whether the video requires a subscription to watch. | +| `web.results[].software` | object? | Aggregated information on a software product found on the web search result page. | +| `web.results[].software.name` | string? | The name of the software product. | +| `web.results[].software.author` | string? | The author of software product. | +| `web.results[].software.version` | string? | The latest version of the software product. | +| `web.results[].software.codeRepository` | string? | The code repository where the software product is currently available or maintained. | +| `web.results[].software.homepage` | string? | The home page of the software product. | +| `web.results[].software.datePublished` | string? | The date when the software product was published. | +| `web.results[].software.is_npm` | bool? | Whether the software product is available on npm. | +| `web.results[].software.is_pypi` | bool? | Whether the software product is available on pypi. | +| `web.results[].software.stars` | int? | The number of stars on the repository. | +| `web.results[].software.forks` | int? | The numbers of forks of the repository. | +| `web.results[].software.programmingLanguage` | string? | The programming language spread on the software product. | +| `web.results[].organization` | object? | Aggregated information on a organization found on the web search result page. | +| `web.results[].organization.type` | string? | A type string identifying an organization. The value is always `organization`. | +| `web.results[].organization.name` | string | The name of the thing. | +| `web.results[].organization.url` | string? | A URL for the thing. | +| `web.results[].organization.thumbnail` | object? | Thumbnail associated with the thing. | +| `web.results[].organization.thumbnail.src` | string | The served URL of the picture thumbnail. | +| `web.results[].organization.thumbnail.alt` | string? | The alt text for the thumbnail image. | +| `web.results[].organization.thumbnail.height` | int? | The height of the thumbnail. | +| `web.results[].organization.thumbnail.width` | int? | The width of the thumbnail. | +| `web.results[].organization.thumbnail.bg_color` | string? | The background color of the thumbnail. | +| `web.results[].organization.thumbnail.original` | string? | The original URL of the image. | +| `web.results[].organization.thumbnail.logo` | bool? | Whether the thumbnail is a logo. | +| `web.results[].organization.thumbnail.duplicated` | bool? | Whether the thumbnail is a duplicate. | +| `web.results[].organization.thumbnail.theme` | string? | The theme of the thumbnail (e.g., light or dark). | +| `web.results[].organization.contact_points` | object[]? | A list of contact points for the organization. | +| `web.results[].organization.contact_points[].type` | string? | A type string identifying a contact point. The value is always `contact_point`. | +| `web.results[].organization.contact_points[].name` | string | The name of the thing. | +| `web.results[].organization.contact_points[].url` | string? | A URL for the thing. | +| `web.results[].organization.contact_points[].thumbnail` | object? | Thumbnail associated with the thing. | +| `web.results[].organization.contact_points[].thumbnail.src` | string | The served URL of the picture thumbnail. | +| `web.results[].organization.contact_points[].thumbnail.alt` | string? | The alt text for the thumbnail image. | +| `web.results[].organization.contact_points[].thumbnail.height` | int? | The height of the thumbnail. | +| `web.results[].organization.contact_points[].thumbnail.width` | int? | The width of the thumbnail. | +| `web.results[].organization.contact_points[].thumbnail.bg_color` | string? | The background color of the thumbnail. | +| `web.results[].organization.contact_points[].thumbnail.original` | string? | The original URL of the image. | +| `web.results[].organization.contact_points[].thumbnail.logo` | bool? | Whether the thumbnail is a logo. | +| `web.results[].organization.contact_points[].thumbnail.duplicated` | bool? | Whether the thumbnail is a duplicate. | +| `web.results[].organization.contact_points[].thumbnail.theme` | string? | The theme of the thumbnail (e.g., light or dark). | +| `web.results[].organization.contact_points[].telephone` | string? | The telephone number of the entity. | +| `web.results[].organization.contact_points[].email` | string? | The email address of the entity. | +| `web.results[].content_type` | string? | The content type associated with the search result page. | +| `web.results[].extra_snippets` | string[]? | A list of extra alternate snippets for the web search result. | +| `web.results[].icons` | object[]? | Icons associated with the search result. | +| `web.results[].icons[].href` | string | | +| `web.results[].icons[].sizes` | string? | | +| `web.results[].icons[].rel` | string? | | +| `web.results[].icons[].type` | string? | | +| `web.results[].icons[].ext` | string? | | +| `web.family_friendly` | bool? | Whether the results are family friendly. | +| `summarizer` | object? | Summary key to get summary results for the query. | +| `summarizer.type` | string? | The type of result. The value is always `summarizer`. | +| `summarizer.key` | string | The key to retrieve the full summary results. | +| `rich` | object? | Callback information to retrieve rich results. | +| `rich.type` | string? | | +| `rich.hint` | object? | | +| `rich.hint.vertical` | string | The vertical associated with the callback. For the full list of verticals supported see the Rich Vertical list. | +| `rich.hint.callback_key` | string | The unique key for the callback. | + +### 404 +Not Found + +| Field | Type | Description | +|-------|------|-------------| +| `type` | string? | | +| `error` | object | | +| `error.id` | string | A unique identifier for this particular occurrence of the problem. | +| `error.status` | int | The HTTP status code applicable to this problem, expressed as a string value. | +| `error.detail` | string? | Explanation specific to this occurrence of the problem. Like title, this field's value can be localized. | +| `error.meta` | object? | A meta object containing non-standard meta-information about the error. | +| `error.code` | string | An application-specific error code, expressed as a string value. | +| `time` | int? | | + +### 422 +Unprocessable Entity + +| Field | Type | Description | +|-------|------|-------------| +| `type` | string? | | +| `error` | object | | +| `error.id` | string | A unique identifier for this particular occurrence of the problem. | +| `error.status` | int | The HTTP status code applicable to this problem, expressed as a string value. | +| `error.detail` | string? | Explanation specific to this occurrence of the problem. Like title, this field's value can be localized. | +| `error.meta` | object? | A meta object containing non-standard meta-information about the error. | +| `error.code` | string | An application-specific error code, expressed as a string value. | +| `time` | int? | | + +### 429 +Too Many Requests + +| Field | Type | Description | +|-------|------|-------------| +| `type` | string? | | +| `error` | object | | +| `error.id` | string | A unique identifier for this particular occurrence of the problem. | +| `error.status` | int | The HTTP status code applicable to this problem, expressed as a string value. | +| `error.detail` | string? | Explanation specific to this occurrence of the problem. Like title, this field's value can be localized. | +| `error.meta` | object? | A meta object containing non-standard meta-information about the error. | +| `error.code` | string | An application-specific error code, expressed as a string value. | +| `time` | int? | | + +## Code Samples + +### cURL + +```bash +curl "https://api.search.brave.com/res/v1/web/search?q=brave+search" \ + -H "Accept: application/json" \ + -H "Accept-Encoding: gzip" \ + -H "X-Subscription-Token: " +``` + +### Python + +```python +import requests + +url = "https://api.search.brave.com/res/v1/web/search" + +params = { + "q": "brave search" +} + +headers = { + "Accept": "application/json", + "Accept-Encoding": "gzip", + "X-Subscription-Token": "" +} + +response = requests.get(url, params=params, headers=headers) +print(response.json()) +``` \ No newline at end of file diff --git a/docs/searxng.md b/docs/searxng.md new file mode 100644 index 0000000..b992004 --- /dev/null +++ b/docs/searxng.md @@ -0,0 +1,284 @@ +# SearXNG + +## Overview + +SearXNG is a privacy-respecting metasearch engine that aggregates results from +multiple upstream search providers and re-ranks them. The Ouranos deployment runs +as a single Docker container behind an authenticating OAuth2-Proxy sidecar (see +[`searxng-auth.md`](./searxng-auth.md) for the auth design). + +**Host:** `rosalind.incus` +**Container port:** 22089 (host) → 8080 (container) +**Public URL:** `https://searxng.ouranos.helu.ca/` (via HAProxy → OAuth2-Proxy → SearXNG) +**Internal URL:** `http://rosalind.incus:22089/` (used by LobeChat, Argos, etc.) + +## Ansible Deployment + +### Layout + +``` +ansible/searxng/ +├── deploy.yml # Main deployment playbook +├── deploy_oauth2.yml # OAuth2-Proxy sidecar playbook +├── docker-compose.yml.j2 # Docker Compose template +├── searxng-settings.yml.j2 # SearXNG settings.yml template +├── oauth2-proxy-searxng.cfg.j2 # OAuth2-Proxy config (see searxng-auth.md) +└── oauth2-proxy-searxng.service.j2 # Systemd unit for the sidecar +``` + +### Run + +```bash +cd ansible +ansible-playbook searxng/deploy.yml --limit rosalind.incus +ansible-playbook searxng/deploy_oauth2.yml --limit rosalind.incus +``` + +`deploy.yml`: + +1. Skips hosts that don't list `searxng` in their `services` list. +2. Creates the `searxng` system user and `/srv/searxng` directory. +3. Templates `docker-compose.yml` and `searxng-settings.yml` into `/srv/searxng/`. +4. Brings up the container with `community.docker.docker_compose_v2` (`pull: always`). + +The container mounts `searxng-settings.yml` read-only at +`/etc/searxng/settings.yml`. There is no persistent volume — the cache lives in +the container's `/tmp` and is rebuilt on restart. + +### Variables + +#### Host Variables (`inventory/host_vars/rosalind.incus.yml`) + +| Variable | Value | Purpose | +|--------------------------|----------------------------------|----------------------------------| +| `searxng_port` | `22089` | Host-side container port | +| `searxng_base_url` | `http://rosalind.incus:22089/` | Used by SearXNG to build URLs | +| `searxng_instance_name` | `Ouranos Search` | Shown in the UI header | +| `searxng_directory` | `/srv/searxng` | Compose project dir on the host | +| `searxng_user`/`group` | `searxng` | Owns templated config files | +| `searxng_syslog_port` | `51403` | Alloy syslog receiver port | + +#### Vault Variables (`group_vars/all/vault.yml`) + +| Variable | Purpose | +|--------------------------------|------------------------------------------------------------| +| `vault_searxng_secret_key` | `server.secret_key` — also used as cache DB password | +| `vault_searxng_brave_api_key` | Brave Search API subscription token (see below) | +| `vault_searxng_oauth_*` | OAuth2-Proxy sidecar — see `searxng-auth.md` | + +> ⚠️ **Changing `vault_searxng_secret_key` truncates the cache.** SearXNG hashes +> cache keys with the secret key; on mismatch it drops every cache table on next +> startup. Harmless, but be aware that engines like `wikidata` and +> `radio_browser` will need to re-fetch their on-disk indexes. + +## Search Engine Configuration + +The engine list is templated in `searxng-settings.yml.j2` and merges with the +upstream defaults via `use_default_settings: true`. The merge is keyed by engine +`name` and is shallow — **only fields you explicitly set override the +defaults**, everything else (including hidden ones like `inactive`) is inherited. + +### Enabled engines + +| Engine | Notes | +|--------------|----------------------------------------------------| +| `duckduckgo` | General web | +| `startpage` | General web | +| `mojeek` | General web | +| `braveapi` | Brave Search via official REST API (see below) | + +### Disabled engines + +| Engine | Reason | +|--------------------------------|------------------------------------------------------------| +| `google` | Aggressive bot detection / unstable scraping results | +| `bing news` | Frequent parsing errors | +| `brave` (HTML scraper) | Replaced by `braveapi` — keeping both duplicates results | +| `brave.images` / `.videos` / `.news` | Scraping endpoints return 451 / access-denied | +| `duckduckgo images` | Suspended / access-denied responses | +| `pexels`, `vimeo` | Same — suspended / access-denied | + +> ℹ️ **Why disable Google and Bing's web search?** Google's HTML scraper is +> blocked aggressively and produces low-quality / inconsistent results. Bing's +> news scraper hits parser failures often enough to be more noise than signal. +> The remaining four engines (Brave API, DuckDuckGo, Startpage, Mojeek) cover +> general web search with stable results and no API rate-limit surprises. + +### Brave Search API (`braveapi`) + +`braveapi` is the official REST API engine — distinct from the `brave` engine, +which scrapes the public Brave Search HTML. The API engine is more reliable, has +proper rate limiting, and supports paging and time-range filters. + +#### Configuration + +```yaml +- name: braveapi + engine: braveapi + api_key: "{{ searxng_brave_api_key }}" + results_per_page: 20 + inactive: false + disabled: false +``` + +#### `inactive: false` is required + +The upstream SearXNG `settings.yml` ships `braveapi` with `inactive: true` and +an empty API key. Because `use_default_settings` does a shallow merge, an +override that only sets `disabled: false` leaves the inherited `inactive: true` +in place — and `inactive` engines are filtered out before `load_engine()` runs. +The result is a silent disable: no error appears in the logs, and the engine +never shows up in `/config`. + +`disabled` and `inactive` are different gates: + +- **`disabled`** — engine still loads; user can toggle it on/off via Preferences. +- **`inactive`** — engine is filtered out before loading; the UI never sees it. + +You need both `inactive: false` and `disabled: false` (or omit `disabled` and +let the default `false` apply). + +#### Endpoint and result handling + +The engine implementation (`searx/engines/braveapi.py`) hits a single endpoint: + +``` +https://api.search.brave.com/res/v1/web/search +``` + +with the `X-Subscription-Token` header. Although the Brave API can return +multiple result sections (`web`, `news`, `videos`, `discussions`, `infobox`, +`locations`, etc.), the SearXNG engine **only consumes `data["web"]["results"]`**. +Other sections in the response are silently discarded. + +This means `braveapi` cannot be split into `braveapi.images` / `braveapi.news` +/ `braveapi.videos` engines the way the HTML-scraper `brave` engine is. To +surface those result types from Brave you'd need to patch the upstream engine +module. For now, the disabled `brave.*` scrapers and other category-specific +engines fill that role. + +#### Categories + +`braveapi` declares `categories = ["general", "web"]` at module level. You don't +need to override this in the YAML. + +### Verifying the engine is live + +After `ansible-playbook searxng/deploy.yml` and a container restart: + +```bash +# 1. Engine is loaded and registered +curl -s 'http://rosalind.incus:22089/config' \ + | jq '.engines[] | select(.name=="braveapi")' + +# 2. Direct query — bypasses any UI/category filtering +curl -s 'http://rosalind.incus:22089/search?q=python&format=json&engines=braveapi' \ + | jq '.results | length, .unresponsive_engines' + +# 3. Container logs — look for braveapi-specific errors +docker logs searxng 2>&1 | grep -i braveapi +``` + +## Authentication + +SearXNG itself does not authenticate users. All public access goes through an +OAuth2-Proxy sidecar that talks to Casdoor for OIDC. Internal callers +(LobeChat, Argos, etc.) hit `http://rosalind.incus:22089/` directly and bypass +auth. + +See [`searxng-auth.md`](./searxng-auth.md) for the full design and Casdoor +application setup. + +## Monitoring + +### Logs + +The container is configured to ship its stdout/stderr to Alloy's syslog +receiver: + +```yaml +logging: + driver: syslog + options: + syslog-address: "tcp://127.0.0.1:51403" + syslog-format: "{{syslog_format}}" + tag: "searxng" +``` + +Alloy on `rosalind.incus` forwards these to Loki. Query in Grafana with: + +``` +{job="searxng", host="rosalind.incus"} +``` + +### Health check + +```bash +curl -fsS http://rosalind.incus:22089/healthz +``` + +## Operations + +### Restart + +```bash +ssh rosalind.incus +cd /srv/searxng +docker compose restart +``` + +### Force pull a newer image + +```bash +ssh rosalind.incus +cd /srv/searxng +docker compose pull +docker compose up -d +``` + +Or just re-run the playbook — `pull: always` is set on the deploy task. + +### Inspect rendered settings inside the container + +```bash +ssh rosalind.incus +docker exec searxng cat /etc/searxng/settings.yml | grep -A6 -B1 braveapi +``` + +## Troubleshooting + +### "Brave doesn't work" + +1. Confirm the engine is registered: `/config` JSON should include a `braveapi` + entry. If absent, `inactive: false` is missing or the template didn't deploy. +2. Confirm the API key is non-empty inside the container — see "Inspect rendered + settings" above. +3. Hit the engine directly with `&engines=braveapi`. If `unresponsive_engines` + contains it with a reason, that's your real error (auth, rate limit, network). + +### `radio_browser` / `wikidata` init errors at startup + +These are unrelated to your engine config: + +- **`radio_browser`** — known cache init-order bug in recent + `searxng/searxng:latest` images. The SQLite `properties` table isn't created + before `radio_browser.init()` calls `CACHE.get(...)`. The engine simply stays + unregistered; other engines work normally. Pinning to an older image tag + works around it. +- **`wikidata`** — transient: `query.wikidata.org` returned a truncated SPARQL + response during the startup language-fetch. Restart the container; if it + persists, Wikidata is rate-limiting the source IP. + +### Cache appears stale after rotating `vault_searxng_secret_key` + +Expected. The secret key is hashed and used as the cache password; on mismatch +SearXNG truncates every cache table at startup. No data loss — search still +works, the engines just rebuild their indexes lazily. + +## References + +- Upstream docs: +- Brave Search API engine: +- Brave Search API reference: [`brave_search_api.md`](./brave_search_api.md) +- SearXNG authentication design: [`searxng-auth.md`](./searxng-auth.md) +- [Ansible Practices](./ansible.md)