[{"data":1,"prerenderedAt":1308},["ShallowReactive",2],{"navigation_docs":3,"-developers-public-api":178,"-developers-public-api-surround":1303},[4,25,50,81,112,133,158],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":6},"Getting started",false,"\u002Fgetting-started","1.getting-started",[10,15,20],{"title":11,"path":12,"stem":13,"icon":14},"Introduction","\u002Fgetting-started\u002Fintroduction","1.getting-started\u002F1.introduction","i-lucide-book-open",{"title":16,"path":17,"stem":18,"icon":19},"Concepts","\u002Fgetting-started\u002Fconcepts","1.getting-started\u002F2.concepts","i-lucide-book-a",{"title":21,"path":22,"stem":23,"icon":24},"Quick start","\u002Fgetting-started\u002Fquick-start","1.getting-started\u002F3.quick-start","i-lucide-rocket",{"title":26,"icon":27,"path":28,"stem":29,"children":30,"page":6},"Workspace","i-lucide-users","\u002Fworkspace","2.workspace",[31,36,41,45],{"title":32,"path":33,"stem":34,"icon":35},"Account","\u002Fworkspace\u002Faccount","2.workspace\u002F1.account","i-lucide-circle-user",{"title":37,"path":38,"stem":39,"icon":40},"Teams","\u002Fworkspace\u002Fteams","2.workspace\u002F2.teams","i-lucide-building-2",{"title":42,"path":43,"stem":44,"icon":27},"Members and roles","\u002Fworkspace\u002Fmembers-and-roles","2.workspace\u002F3.members-and-roles",{"title":46,"path":47,"stem":48,"icon":49},"Projects","\u002Fworkspace\u002Fprojects","2.workspace\u002F4.projects","i-lucide-folder-kanban",{"title":51,"icon":52,"path":53,"stem":54,"children":55,"page":6},"Catalogue","i-lucide-package","\u002Fcatalogue","3.catalogue",[56,61,66,71,76],{"title":57,"path":58,"stem":59,"icon":60},"Products","\u002Fcatalogue\u002Fproducts","3.catalogue\u002F1.products","i-lucide-box",{"title":62,"path":63,"stem":64,"icon":65},"Offers","\u002Fcatalogue\u002Foffers","3.catalogue\u002F2.offers","i-lucide-tag",{"title":67,"path":68,"stem":69,"icon":70},"Brands","\u002Fcatalogue\u002Fbrands","3.catalogue\u002F3.brands","i-lucide-badge-check",{"title":72,"path":73,"stem":74,"icon":75},"Merchants","\u002Fcatalogue\u002Fmerchants","3.catalogue\u002F4.merchants","i-lucide-store",{"title":77,"path":78,"stem":79,"icon":80},"Custom attributes","\u002Fcatalogue\u002Fcustom-attributes","3.catalogue\u002F5.custom-attributes","i-lucide-list-plus",{"title":82,"icon":83,"path":84,"stem":85,"children":86,"page":6},"Scraping","i-lucide-scan-search","\u002Fscraping","4.scraping",[87,92,97,102,107],{"title":88,"path":89,"stem":90,"icon":91},"Connect Scrape Admin","\u002Fscraping\u002Fconnect-scrape-admin","4.scraping\u002F1.connect-scrape-admin","i-lucide-plug",{"title":93,"path":94,"stem":95,"icon":96},"Scrape profiles","\u002Fscraping\u002Fscrape-profiles","4.scraping\u002F2.scrape-profiles","i-lucide-scan-text",{"title":98,"path":99,"stem":100,"icon":101},"Schedules and configuration","\u002Fscraping\u002Fschedules-and-configuration","4.scraping\u002F3.schedules-and-configuration","i-lucide-sliders-horizontal",{"title":103,"path":104,"stem":105,"icon":106},"Sync and reconcile","\u002Fscraping\u002Fsync-and-reconcile","4.scraping\u002F4.sync-and-reconcile","i-lucide-refresh-cw",{"title":108,"path":109,"stem":110,"icon":111},"Webhooks","\u002Fscraping\u002Fwebhooks","4.scraping\u002F5.webhooks","i-lucide-webhook",{"title":113,"icon":114,"path":115,"stem":116,"children":117,"page":6},"Growing the catalogue","i-lucide-sprout","\u002Fgrowing-the-catalogue","5.growing-the-catalogue",[118,123,128],{"title":119,"path":120,"stem":121,"icon":122},"Imports","\u002Fgrowing-the-catalogue\u002Fimports","5.growing-the-catalogue\u002F1.imports","i-lucide-import",{"title":124,"path":125,"stem":126,"icon":127},"Repair queues","\u002Fgrowing-the-catalogue\u002Frepair-queues","5.growing-the-catalogue\u002F2.repair-queues","i-lucide-wrench",{"title":129,"path":130,"stem":131,"icon":132},"Wrong URL flow","\u002Fgrowing-the-catalogue\u002Fwrong-url-flow","5.growing-the-catalogue\u002F3.wrong-url-flow","i-lucide-route",{"title":134,"icon":135,"path":136,"stem":137,"children":138,"page":6},"Publishing","i-lucide-globe","\u002Fpublishing","6.publishing",[139,143,148,153],{"title":140,"path":141,"stem":142,"icon":135},"Websites","\u002Fpublishing\u002Fwebsites","6.publishing\u002F1.websites",{"title":144,"path":145,"stem":146,"icon":147},"Website content","\u002Fpublishing\u002Fwebsite-content","6.publishing\u002F2.website-content","i-lucide-languages",{"title":149,"path":150,"stem":151,"icon":152},"SEO templates","\u002Fpublishing\u002Fseo-templates","6.publishing\u002F3.seo-templates","i-lucide-search",{"title":154,"path":155,"stem":156,"icon":157},"Analytics","\u002Fpublishing\u002Fanalytics","6.publishing\u002F4.analytics","i-lucide-chart-line",{"title":159,"icon":160,"path":161,"stem":162,"children":163,"page":6},"Developers","i-lucide-code","\u002Fdevelopers","7.developers",[164,169,173],{"title":165,"path":166,"stem":167,"icon":168},"Public API","\u002Fdevelopers\u002Fpublic-api","7.developers\u002F1.public-api","i-lucide-code-xml",{"title":170,"path":171,"stem":172,"icon":52},"Listings client","\u002Fdevelopers\u002Flistings-client","7.developers\u002F2.listings-client",{"title":174,"path":175,"stem":176,"icon":177},"Click tracking","\u002Fdevelopers\u002Fclick-tracking","7.developers\u002F3.click-tracking","i-lucide-mouse-pointer-click",{"id":179,"title":165,"body":180,"description":1295,"extension":1296,"links":1297,"meta":1298,"navigation":1299,"path":166,"seo":1300,"stem":167,"__hash__":1302},"docs\u002F7.developers\u002F1.public-api.md",{"type":181,"value":182,"toc":1275},"minimark",[183,191,199,204,207,255,291,306,310,447,452,455,487,505,509,534,538,542,548,625,629,695,722,726,797,859,871,903,907,910,940,943,947,969,979,983,1036,1056,1060,1107,1126,1130,1148,1152,1165,1169,1174,1178,1181,1253,1264,1271],[184,185,186,187,190],"p",{},"The public API serves a project's brands, products, merchants and prices to a comparison website. It is read-only apart from one batch endpoint for click reports. Every website of a project has its own token and sees the project through its own languages, terms and price settings. Register websites in ",[188,189,140],"a",{"href":141},".",[184,192,193,194,198],{},"All routes live under ",[195,196,197],"code",{},"\u002Fapi\u002Fpublic\u002Fv1"," on the platform's origin.",[200,201,203],"h2",{"id":202},"authentication","Authentication",[184,205,206],{},"Send the website token as a bearer token:",[208,209,214],"pre",{"className":210,"code":211,"language":212,"meta":213,"style":213},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","curl -H \"Authorization: Bearer pwt_xxxxxxxx\" \\\n  \"https:\u002F\u002Fplatform.example\u002Fapi\u002Fpublic\u002Fv1\u002Fwebsite\"\n","bash","",[195,215,216,243],{"__ignoreMap":213},[217,218,221,225,229,233,236,239],"span",{"class":219,"line":220},"line",1,[217,222,224],{"class":223},"sBMFI","curl",[217,226,228],{"class":227},"sfazB"," -H",[217,230,232],{"class":231},"sMK4o"," \"",[217,234,235],{"class":227},"Authorization: Bearer pwt_xxxxxxxx",[217,237,238],{"class":231},"\"",[217,240,242],{"class":241},"sTEyZ"," \\\n",[217,244,246,249,252],{"class":219,"line":245},2,[217,247,248],{"class":231},"  \"",[217,250,251],{"class":227},"https:\u002F\u002Fplatform.example\u002Fapi\u002Fpublic\u002Fv1\u002Fwebsite",[217,253,254],{"class":231},"\"\n",[256,257,258,266,269,272],"ul",{},[259,260,261,262,265],"li",{},"The token (",[195,263,264],{},"pwt_…",") identifies the website. It is shown once when the website is created or its token rotated. The platform stores only a SHA-256 hash.",[259,267,268],{},"The token is a server-side secret. Call the API from the website's server (SSR, server routes, a Worker), never from the browser. The API sends no CORS headers.",[259,270,271],{},"After a rotation the previous token is accepted for 24 hours. A deleted website's token stops working immediately.",[259,273,274,275,278,279,282,283,286,287,290],{},"A missing or invalid token answers ",[195,276,277],{},"401"," with ",[195,280,281],{},"data.code"," set to ",[195,284,285],{},"unauthorized"," and a ",[195,288,289],{},"WWW-Authenticate: Bearer"," header.",[184,292,293,294,297,298,301,302,305],{},"Responses carry ",[195,295,296],{},"Cache-Control: private, max-age=60",", ",[195,299,300],{},"Vary: Authorization"," and ",[195,303,304],{},"X-Robots-Tag: noindex",", so a shared cache never serves one website's data to another.",[200,307,309],{"id":308},"conventions","Conventions",[311,312,313,326],"table",{},[314,315,316],"thead",{},[317,318,319,323],"tr",{},[320,321,322],"th",{},"Topic",[320,324,325],{},"Rule",[327,328,329,349,361,372,397,416],"tbody",{},[317,330,331,335],{},[332,333,334],"td",{},"Prices",[332,336,337,338,341,342,345,346,190],{},"Integer cents with currency: ",[195,339,340],{},"{ \"amountCents\": 7980, \"currency\": \"NOK\" }",". All prices are in the project's base currency. An offer carries ",[195,343,344],{},"originalPrice"," when the merchant prices in another currency, otherwise ",[195,347,348],{},"null",[317,350,351,354],{},[332,352,353],{},"Dates",[332,355,356,357,360],{},"ISO 8601 strings. Price history days are ",[195,358,359],{},"YYYY-MM-DD"," (UTC).",[317,362,363,366],{},[332,364,365],{},"Identifiers",[332,367,368,369,190],{},"Public identifiers are slugs. The only opaque id is the offer id inside ",[195,370,371],{},"outboundUrl",[317,373,374,377],{},[332,375,376],{},"Locale",[332,378,379,380,383,384,387,388,391,392,387,394,396],{},"Every GET route accepts ",[195,381,382],{},"?locale=",". The response is served in the website language that best matches it: the exact locale, then its language (",[195,385,386],{},"nb-NO"," to ",[195,389,390],{},"nb","), then a regional variant (",[195,393,390],{},[195,395,386],{},"), then the website's default language. An unsupported locale is not an error.",[317,398,399,402],{},[332,400,401],{},"Pagination",[332,403,404,405,408,409,412,413,190],{},"List routes take ",[195,406,407],{},"page"," (default 1) and ",[195,410,411],{},"pageSize"," (default 24, at most 100) and return ",[195,414,415],{},"{ items, total, page, pageSize }",[317,417,418,421],{},[332,419,420],{},"Errors",[332,422,423,424,297,427,297,430,301,433,436,437,439,440,442,443,446],{},"JSON with ",[195,425,426],{},"statusCode",[195,428,429],{},"statusMessage",[195,431,432],{},"message",[195,434,435],{},"data",". ",[195,438,281],{}," is ",[195,441,285],{}," or ",[195,444,445],{},"not_found"," where set.",[448,449,451],"h3",{"id":450},"what-is-served","What is served",[184,453,454],{},"Only live data is served:",[256,456,457,465,468,478,484],{},[259,458,459,460,464],{},"An offer is shown when it is active, has a price, and its merchant is not deprecated. With the website's ",[461,462,463],"strong",{},"Hide zero prices"," on (default), a price of 0 counts as no price.",[259,466,467],{},"A product is listed when it has a live offer. Brands and merchants are listed when they have at least one such product.",[259,469,470,471,278,474,477],{},"Deprecated brands, products and merchants are hidden. Their slug answers ",[195,472,473],{},"404",[195,475,476],{},"data.replacedBySlug"," when they were merged into another, so the site can redirect permanently.",[259,479,480,481,190],{},"Custom fields are served only when marked ",[461,482,483],{},"Public",[259,485,486],{},"Notes, scrape settings, raw results, internal ids and merchant URLs are never served.",[184,488,489,490,493,494,497,498,501,502,504],{},"Products carry ",[195,491,492],{},"name"," (without brand) and ",[195,495,496],{},"displayName"," in the project's product name format (default ",[195,499,500],{},"{brand.name} {product.name}","). Use ",[195,503,496],{}," in titles, headings and links.",[448,506,508],{"id":507},"seo-fields","SEO fields",[184,510,511,512,515,516,519,520,522,523,526,527,530,531,190],{},"Brand, merchant and product detail responses carry ",[195,513,514],{},"seo: { title, description, noindex }",": the entity's own SEO texts, else the project's ",[188,517,518],{"href":150},"SEO template",", else ",[195,521,348],{},". Titles do not include the website's title template. ",[195,524,525],{},"noindex"," entities should render ",[195,528,529],{},"robots: noindex"," and are left out of ",[195,532,533],{},"\u002Fsitemap",[200,535,537],{"id":536},"endpoints","Endpoints",[448,539,541],{"id":540},"get-website","GET \u002Fwebsite",[184,543,544,545,190],{},"The calling website and catalogue totals. Parameters: ",[195,546,547],{},"locale",[184,549,550,551,297,554,297,556,559,560,297,562,565,566,297,569,297,572,575,576,297,579,297,582,585,586,589,590,575,593,297,596,297,599,297,602,605,606,575,609,297,612,297,615,297,618,621,622,624],{},"Returns ",[195,552,553],{},"id",[195,555,492],{},[195,557,558],{},"fqdn",", the served ",[195,561,547],{},[195,563,564],{},"locales"," (default first), ",[195,567,568],{},"currency",[195,570,571],{},"pricesIncludeVat",[195,573,574],{},"terms"," (",[195,577,578],{},"product",[195,580,581],{},"brand",[195,583,584],{},"merchant","), ",[195,587,588],{},"translations"," (free texts), ",[195,591,592],{},"seo",[195,594,595],{},"titleTemplate",[195,597,598],{},"homeTitle",[195,600,601],{},"homeDescription",[195,603,604],{},"ogImage",") and ",[195,607,608],{},"counts",[195,610,611],{},"brands",[195,613,614],{},"products",[195,616,617],{},"merchants",[195,619,620],{},"offers","). Terms, texts and SEO come from ",[188,623,144],{"href":145}," and fall back to the default language.",[448,626,628],{"id":627},"get-brands-and-get-brandsslug","GET \u002Fbrands and GET \u002Fbrands\u002F:slug",[311,630,631,641],{},[314,632,633],{},[317,634,635,638],{},[320,636,637],{},"Parameter",[320,639,640],{},"Values",[327,642,643,662,680],{},[317,644,645,656],{},[332,646,647,297,649,297,651,297,653],{},[195,648,547],{},[195,650,407],{},[195,652,411],{},[195,654,655],{},"q",[332,657,658,659,661],{},"As above. ",[195,660,655],{}," filters by name (contains).",[317,663,664,669],{},[332,665,666],{},[195,667,668],{},"sort",[332,670,671,673,674,297,677],{},[195,672,492],{}," (default), ",[195,675,676],{},"productCount",[195,678,679],{},"minPrice",[317,681,682,687],{},[332,683,684],{},[195,685,686],{},"order",[332,688,689,673,692],{},[195,690,691],{},"asc",[195,693,694],{},"desc",[184,696,697,698,297,701,297,703,297,705,707,708,297,711,297,713,297,716,301,719,190],{},"List items: ",[195,699,700],{},"slug",[195,702,492],{},[195,704,676],{},[195,706,679],{},". The detail adds ",[195,709,710],{},"description",[195,712,592],{},[195,714,715],{},"attributes",[195,717,718],{},"merchantCount",[195,720,721],{},"offerCount",[448,723,725],{"id":724},"get-products-and-get-productsslug","GET \u002Fproducts and GET \u002Fproducts\u002F:slug",[311,727,728,736],{},[314,729,730],{},[317,731,732,734],{},[320,733,637],{},[320,735,640],{},[327,737,738,753,762,771,785],{},[317,739,740,750],{},[332,741,742,297,744,297,746,297,748],{},[195,743,547],{},[195,745,407],{},[195,747,411],{},[195,749,655],{},[332,751,752],{},"As above.",[317,754,755,759],{},[332,756,757],{},[195,758,581],{},[332,760,761],{},"Brand slug.",[317,763,764,768],{},[332,765,766],{},[195,767,584],{},[332,769,770],{},"Merchant slug: only products this merchant sells.",[317,772,773,777],{},[332,774,775],{},[195,776,668],{},[332,778,779,673,781,297,783],{},[195,780,492],{},[195,782,679],{},[195,784,721],{},[317,786,787,791],{},[332,788,789],{},[195,790,686],{},[332,792,793,673,795],{},[195,794,691],{},[195,796,694],{},[184,798,697,799,297,801,297,803,297,805,575,807,297,809,585,811,297,813,297,815,707,817,297,819,297,821,301,824,826,827,297,829,575,831,297,833,297,835,585,838,297,841,297,843,575,846,848,849,297,852,297,855,301,857,190],{},[195,800,700],{},[195,802,492],{},[195,804,496],{},[195,806,581],{},[195,808,700],{},[195,810,492],{},[195,812,715],{},[195,814,679],{},[195,816,721],{},[195,818,710],{},[195,820,592],{},[195,822,823],{},"updatedAt",[195,825,620],{},", cheapest first. Each offer has ",[195,828,553],{},[195,830,584],{},[195,832,700],{},[195,834,492],{},[195,836,837],{},"websiteHost",[195,839,840],{},"price",[195,842,344],{},[195,844,845],{},"inStock",[195,847,348],{}," when the merchant does not report stock), ",[195,850,851],{},"lastCheckedAt",[195,853,854],{},"isCheapest",[195,856,371],{},[195,858,715],{},[184,860,861,862,864,865,868,869,190],{},"Use ",[195,863,371],{}," as the link target of the buy button, with ",[195,866,867],{},"rel=\"nofollow sponsored\"",". See ",[188,870,174],{"href":175},[208,872,874],{"className":210,"code":873,"language":212,"meta":213,"style":213},"curl -H \"Authorization: Bearer $LISTINGS_TOKEN\" \\\n  \"https:\u002F\u002Fplatform.example\u002Fapi\u002Fpublic\u002Fv1\u002Fproducts?brand=xqs&sort=minPrice&pageSize=12&locale=nb-NO\"\n",[195,875,876,894],{"__ignoreMap":213},[217,877,878,880,882,884,887,890,892],{"class":219,"line":220},[217,879,224],{"class":223},[217,881,228],{"class":227},[217,883,232],{"class":231},[217,885,886],{"class":227},"Authorization: Bearer ",[217,888,889],{"class":241},"$LISTINGS_TOKEN",[217,891,238],{"class":231},[217,893,242],{"class":241},[217,895,896,898,901],{"class":219,"line":245},[217,897,248],{"class":231},[217,899,900],{"class":227},"https:\u002F\u002Fplatform.example\u002Fapi\u002Fpublic\u002Fv1\u002Fproducts?brand=xqs&sort=minPrice&pageSize=12&locale=nb-NO",[217,902,254],{"class":231},[448,904,906],{"id":905},"get-productsslugsimilar","GET \u002Fproducts\u002F:slug\u002Fsimilar",[184,908,909],{},"Products of the same brand first, then the closest in price.",[311,911,912,920],{},[314,913,914],{},[317,915,916,918],{},[320,917,637],{},[320,919,640],{},[327,921,922,930],{},[317,923,924,928],{},[332,925,926],{},[195,927,547],{},[332,929,752],{},[317,931,932,937],{},[332,933,934],{},[195,935,936],{},"limit",[332,938,939],{},"1 to 24, default 8",[184,941,942],{},"Returns an array of product list items.",[448,944,946],{"id":945},"get-productsslugprice-history","GET \u002Fproducts\u002F:slug\u002Fprice-history",[311,948,949,957],{},[314,950,951],{},[317,952,953,955],{},[320,954,637],{},[320,956,640],{},[327,958,959],{},[317,960,961,966],{},[332,962,963],{},[195,964,965],{},"days",[332,967,968],{},"1 to 365, default 90",[184,970,550,971,974,975,978],{},[195,972,973],{},"{ currency, days, points }",". Each point is ",[195,976,977],{},"{ date, minCents, offerCount }",": the lowest price across the product's active offers on that day, oldest first. Prices carry forward between changes, and days without any price are left out.",[448,980,982],{"id":981},"get-merchants-and-get-merchantsslug","GET \u002Fmerchants and GET \u002Fmerchants\u002F:slug",[311,984,985,993],{},[314,986,987],{},[317,988,989,991],{},[320,990,637],{},[320,992,640],{},[327,994,995,1009,1024],{},[317,996,997,1007],{},[332,998,999,297,1001,297,1003,297,1005],{},[195,1000,547],{},[195,1002,407],{},[195,1004,411],{},[195,1006,655],{},[332,1008,752],{},[317,1010,1011,1015],{},[332,1012,1013],{},[195,1014,668],{},[332,1016,1017,673,1020,297,1022],{},[195,1018,1019],{},"avgPrice",[195,1021,492],{},[195,1023,676],{},[317,1025,1026,1030],{},[332,1027,1028],{},[195,1029,686],{},[332,1031,1032,673,1034],{},[195,1033,691],{},[195,1035,694],{},[184,1037,697,1038,297,1040,297,1042,297,1044,297,1046,707,1048,297,1050,297,1052,301,1054,190],{},[195,1039,700],{},[195,1041,492],{},[195,1043,837],{},[195,1045,676],{},[195,1047,1019],{},[195,1049,710],{},[195,1051,592],{},[195,1053,715],{},[195,1055,679],{},[448,1057,1059],{"id":1058},"get-search","GET \u002Fsearch",[311,1061,1062,1070],{},[314,1063,1064],{},[317,1065,1066,1068],{},[320,1067,637],{},[320,1069,640],{},[327,1071,1072,1081,1098],{},[317,1073,1074,1078],{},[332,1075,1076],{},[195,1077,655],{},[332,1079,1080],{},"Required, 1 to 200 characters.",[317,1082,1083,1088],{},[332,1084,1085],{},[195,1086,1087],{},"types",[332,1089,1090,1091,297,1093,297,1095,1097],{},"Comma separated list of ",[195,1092,578],{},[195,1094,581],{},[195,1096,584],{},". Default: all.",[317,1099,1100,1104],{},[332,1101,1102],{},[195,1103,936],{},[332,1105,1106],{},"1 to 50, default 10",[184,1108,550,1109,1112,1113,297,1116,297,1118,297,1120,1122,1123,1125],{},[195,1110,1111],{},"{ q, hits }",". A hit has ",[195,1114,1115],{},"type",[195,1117,700],{},[195,1119,492],{},[195,1121,496],{}," and, for products, ",[195,1124,581],{},". Search matches the default-language names.",[448,1127,1129],{"id":1128},"get-sitemap","GET \u002Fsitemap",[184,1131,1132,1133,1136,1137,1139,1140,1143,1144,1147],{},"Every indexable brand, merchant and product with its last change: ",[195,1134,1135],{},"{ items: [{ type, slug, updatedAt }] }",". Entities marked ",[195,1138,525],{}," are left out. ",[195,1141,1142],{},"@product-comparison\u002Fcatalog-kit"," has ",[195,1145,1146],{},"buildSitemapXml"," to turn it into XML.",[448,1149,1151],{"id":1150},"get-goofferid","GET \u002Fgo\u002F:offerId",[184,1153,1154,1155,1158,1159,1162,1163,190],{},"For self-hosted redirect clients. Query: ",[195,1156,1157],{},"s"," (the signature from the link). Returns ",[195,1160,1161],{},"{ target, kind, trackable, ttl }",". It never records a click. See ",[188,1164,174],{"href":175},[448,1166,1168],{"id":1167},"post-clicks","POST \u002Fclicks",[184,1170,1171,1172,190],{},"For self-hosted redirect clients. Reports clicks in batches. See ",[188,1173,174],{"href":175},[200,1175,1177],{"id":1176},"example-flow","Example flow",[184,1179,1180],{},"A product page needs the website settings once and the product on each request:",[208,1182,1184],{"className":210,"code":1183,"language":212,"meta":213,"style":213},"# Website settings: languages, terms, texts, SEO, currency\ncurl -H \"Authorization: Bearer $LISTINGS_TOKEN\" \"$BASE\u002Fapi\u002Fpublic\u002Fv1\u002Fwebsite?locale=nb-NO\"\n\n# The product with its offers\ncurl -H \"Authorization: Bearer $LISTINGS_TOKEN\" \"$BASE\u002Fapi\u002Fpublic\u002Fv1\u002Fproducts\u002Fettan-loos?locale=nb-NO\"\n",[195,1185,1186,1192,1216,1223,1229],{"__ignoreMap":213},[217,1187,1188],{"class":219,"line":220},[217,1189,1191],{"class":1190},"sHwdD","# Website settings: languages, terms, texts, SEO, currency\n",[217,1193,1194,1196,1198,1200,1202,1204,1206,1208,1211,1214],{"class":219,"line":245},[217,1195,224],{"class":223},[217,1197,228],{"class":227},[217,1199,232],{"class":231},[217,1201,886],{"class":227},[217,1203,889],{"class":241},[217,1205,238],{"class":231},[217,1207,232],{"class":231},[217,1209,1210],{"class":241},"$BASE",[217,1212,1213],{"class":227},"\u002Fapi\u002Fpublic\u002Fv1\u002Fwebsite?locale=nb-NO",[217,1215,254],{"class":231},[217,1217,1219],{"class":219,"line":1218},3,[217,1220,1222],{"emptyLinePlaceholder":1221},true,"\n",[217,1224,1226],{"class":219,"line":1225},4,[217,1227,1228],{"class":1190},"# The product with its offers\n",[217,1230,1232,1234,1236,1238,1240,1242,1244,1246,1248,1251],{"class":219,"line":1231},5,[217,1233,224],{"class":223},[217,1235,228],{"class":227},[217,1237,232],{"class":231},[217,1239,886],{"class":227},[217,1241,889],{"class":241},[217,1243,238],{"class":231},[217,1245,232],{"class":231},[217,1247,1210],{"class":241},[217,1249,1250],{"class":227},"\u002Fapi\u002Fpublic\u002Fv1\u002Fproducts\u002Fettan-loos?locale=nb-NO",[217,1252,254],{"class":231},[184,1254,1255,1256,278,1258,1260,1261,190],{},"A ",[195,1257,473],{},[195,1259,476],{}," means the product was merged: answer with a permanent redirect to ",[195,1262,1263],{},"\u002Fproducts\u002F\u003CreplacedBySlug>",[1265,1266,1267,1268,190],"tip",{},"Instead of writing HTTP calls yourself, use the typed ",[188,1269,1270],{"href":171},"listings client",[1272,1273,1274],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}",{"title":213,"searchDepth":245,"depth":245,"links":1276},[1277,1278,1282,1294],{"id":202,"depth":245,"text":203},{"id":308,"depth":245,"text":309,"children":1279},[1280,1281],{"id":450,"depth":1218,"text":451},{"id":507,"depth":1218,"text":508},{"id":536,"depth":245,"text":537,"children":1283},[1284,1285,1286,1287,1288,1289,1290,1291,1292,1293],{"id":540,"depth":1218,"text":541},{"id":627,"depth":1218,"text":628},{"id":724,"depth":1218,"text":725},{"id":905,"depth":1218,"text":906},{"id":945,"depth":1218,"text":946},{"id":981,"depth":1218,"text":982},{"id":1058,"depth":1218,"text":1059},{"id":1128,"depth":1218,"text":1129},{"id":1150,"depth":1218,"text":1151},{"id":1167,"depth":1218,"text":1168},{"id":1176,"depth":245,"text":1177},"Reference of the read-only HTTP API that comparison websites use to show brands, products, merchants and prices.","md",null,{},{"icon":168},{"title":165,"description":1301},"Authentication, conventions and every endpoint of the platform's public listings API under \u002Fapi\u002Fpublic\u002Fv1, with parameters and curl examples.","Y57aBNS0y1W_7rx_w4thr3lwyobQlMT9DgwPrQxKh7M",[1304,1306],{"title":154,"path":155,"stem":156,"description":1305,"icon":157,"children":-1},"Read the project overview and the analytics page to follow scraping health, price movements, catalogue growth and outbound clicks.",{"title":170,"path":171,"stem":172,"description":1307,"icon":52,"children":-1},"Use the typed @product-comparison\u002Flistings-client package to call the public API from a website's server code.",1792430223780]