[{"data":1,"prerenderedAt":586},["ShallowReactive",2],{"navigation_docs":3,"-scraping-scrape-profiles":178,"-scraping-scrape-profiles-surround":581},[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":93,"body":180,"description":573,"extension":574,"links":575,"meta":576,"navigation":577,"path":94,"seo":578,"stem":95,"__hash__":580},"docs\u002F4.scraping\u002F2.scrape-profiles.md",{"type":181,"value":182,"toc":559},"minimark",[183,192,200,207,212,241,247,317,326,343,347,354,360,447,457,472,476,518,521,530,552],[184,185,186,187,191],"p",{},"A scrape profile describes how to read price, stock and other values from a shop's product pages. Each ",[188,189,190],"a",{"href":73},"merchant"," uses one profile, and a profile can be shared by several merchants. Profiles are written in Scrape Admin's profile format, and the platform keeps them in sync with the connected Scrape Admin team.",[184,193,194,195,199],{},"Open ",[196,197,198],"strong",{},"Profiles"," in the project sidebar. Writing and saving profiles needs admin access. Members can open them, validate and test-run drafts, but not save.",[184,201,202],{},[203,204],"img",{"alt":205,"src":206},"The profiles list","\u002Fscreenshots\u002Fprofiles.png",[208,209,211],"h2",{"id":210},"the-profile-list","The profile list",[184,213,214,215,218,219,222,223,218,226,228,229,232,233,236,237,240],{},"The table shows ",[196,216,217],{},"Profile",", ",[196,220,221],{},"Attributes"," (the values it extracts), ",[196,224,225],{},"Method",[196,227,72],{}," (how many merchants use it), ",[196,230,231],{},"Sync"," and ",[196,234,235],{},"Updated",". ",[196,238,239],{},"Search profiles..."," matches name, description and attribute names.",[184,242,243,244,246],{},"The ",[196,245,231],{}," column shows one of:",[248,249,250,263],"table",{},[251,252,253],"thead",{},[254,255,256,260],"tr",{},[257,258,259],"th",{},"Badge",[257,261,262],{},"Meaning",[264,265,266,277,287,297,307],"tbody",{},[254,267,268,274],{},[269,270,271],"td",{},[196,272,273],{},"Local only",[269,275,276],{},"Scrape Admin is not connected.",[254,278,279,284],{},[269,280,281],{},[196,282,283],{},"Not synced",[269,285,286],{},"Not pushed to Scrape Admin yet.",[254,288,289,294],{},[269,290,291],{},[196,292,293],{},"Synced",[269,295,296],{},"In step with Scrape Admin.",[254,298,299,304],{},[269,300,301],{},[196,302,303],{},"Sync failed",[269,305,306],{},"The last sync failed. Hover for the error.",[254,308,309,314],{},[269,310,311],{},[196,312,313],{},"Conflict",[269,315,316],{},"Changed here and in Scrape Admin since the last sync.",[184,318,319,320,322,323,325],{},"If Scrape Admin is not connected, a warning says that profiles stay local and that validating and test runs need it, with a ",[196,321,88],{}," button, see ",[188,324,88],{"href":89},".",[184,327,243,328,331,332,218,335,338,339,342],{},[196,329,330],{},"..."," menu on a row has ",[196,333,334],{},"Open",[196,336,337],{},"Sync with Scrape Admin"," (when connected) and ",[196,340,341],{},"Delete",". A profile that merchants still use cannot be deleted. When connected, deleting also removes it from Scrape Admin.",[208,344,346],{"id":345},"create-a-profile","Create a profile",[184,348,349,350,353],{},"Click ",[196,351,352],{},"New profile",". The editor is also a playground: you can build and test a profile before saving it.",[184,355,356],{},[203,357],{"alt":358,"src":359},"The new profile editor with the test run panel","\u002Fscreenshots\u002Fprofiles-new.png",[361,362,363,368,375,379,414,418,433,437],"steps",{},[364,365,367],"h3",{"id":366},"name-it","Name it",[184,369,370,371,374],{},"Type a name in the ",[196,372,373],{},"Profile name"," field, for example the shop's name.",[364,376,378],{"id":377},"describe-the-values-to-extract","Describe the values to extract",[184,380,381,382,385,386,389,390,394,395,397,398,401,402,405,406,409,410,413],{},"Under ",[196,383,384],{},"Elements",", click ",[196,387,388],{},"Add your first element"," for each value to read from a page, such as the price. Elements for custom fields are named ",[391,392,393],"code",{},"product.\u003Ckey>",", see ",[188,396,77],{"href":78},". The other tabs are ",[196,399,400],{},"Actions"," (steps to run before or after reading), ",[196,403,404],{},"Page & request"," (URL patterns, request settings, browser and blocking), ",[196,407,408],{},"Details"," (description and internal note) and ",[196,411,412],{},"YAML"," (the whole profile as text).",[364,415,417],{"id":416},"test-it","Test it",[184,419,420,421,424,425,428,429,432],{},"In the ",[196,422,423],{},"Test run"," panel, enter a ",[196,426,427],{},"Page URL"," and click ",[196,430,431],{},"Run",". It runs the unsaved draft in Scrape Admin and shows what was extracted, typically within 10 to 60 seconds. This requires a connection and at least member access.",[364,434,436],{"id":435},"validate-and-save","Validate and save",[184,438,439,442,443,446],{},[196,440,441],{},"Validate"," asks Scrape Admin whether it can save and run the draft, and lists any problems. Then click ",[196,444,445],{},"Create profile",". If Scrape Admin rejects the profile, the problems are listed above the editor and nothing is saved.",[184,448,449,450,452,453,456],{},"On the ",[196,451,404],{}," tab, the ",[196,454,455],{},"Browser"," setting chooses the Scrape Admin browser used to render pages, and only applies to profiles that use the browser method. A merchant can override it.",[184,458,459,460,463,464,467,468,471],{},"The editor warns before you leave with unsaved changes. ",[196,461,462],{},"Discard"," goes back to the last saved version, and ",[391,465,466],{},"Ctrl+S"," or ",[391,469,470],{},"Cmd+S"," saves.",[208,473,475],{"id":474},"import-and-export","Import and export",[477,478,479,486,508],"ul",{},[480,481,482,485],"li",{},[196,483,484],{},"Export YAML"," downloads the project's profiles.",[480,487,488,491,492,495,496,499,500,503,504,507],{},[196,489,490],{},"Import YAML"," opens ",[196,493,494],{},"Import profiles",". Paste YAML or JSON or choose a file. One profile, a list, or a profiles list is accepted. The ",[196,497,498],{},"Mode"," is ",[196,501,502],{},"Upsert by name"," (updates existing profiles, creates the rest) or ",[196,505,506],{},"Create only"," (skips profiles whose name already exists). The result lists what was created, updated, skipped and failed.",[480,509,510,513,514,517],{},[196,511,512],{},"Import from Scrape Admin"," (only when connected) lists profiles in the connected Scrape Admin team that no profile here is linked to. Select some and click ",[196,515,516],{},"Import",". Imported profiles stay linked and sync both ways. You can import at most 25 profiles per import.",[208,519,337],{"id":520},"sync-with-scrape-admin",[184,522,523,524,526,527,325],{},"Saving a profile pushes it to Scrape Admin when connected. If that push fails you get a \"Saved, but the Scrape Admin sync failed\" warning, and the profile's ",[196,525,408],{}," tab offers ",[196,528,529],{},"Retry sync",[477,531,532,538],{},[480,533,534,537],{},[196,535,536],{},"Sync all"," on the list syncs every profile in both directions: it pulls changes made in Scrape Admin, pushes local changes and creates missing ones.",[480,539,540,541,543,544,547,548,551],{},"A profile edited on both sides is left as a conflict. Open it and, on the ",[196,542,408],{}," tab, choose ",[196,545,546],{},"Keep this version"," (replaces the Scrape Admin changes) or ",[196,549,550],{},"Use Scrape Admin version"," (replaces your local changes).",[184,553,243,554,556,557,325],{},[196,555,408],{}," tab also shows the sync status, the Scrape Admin id, when it was synced and which merchants use the profile. For bulk syncing of everything, see ",[188,558,103],{"href":104},{"title":560,"searchDepth":561,"depth":561,"links":562},"",2,[563,564,571,572],{"id":210,"depth":561,"text":211},{"id":345,"depth":561,"text":346,"children":565},[566,568,569,570],{"id":366,"depth":567,"text":367},3,{"id":377,"depth":567,"text":378},{"id":416,"depth":567,"text":417},{"id":435,"depth":567,"text":436},{"id":474,"depth":561,"text":475},{"id":520,"depth":561,"text":337},"Create, test, validate, import, export and sync the profiles that describe how a shop's product pages are read.","md",null,{},{"icon":96},{"title":93,"description":579},"How to create and test scrape profiles, validate them with Scrape Admin, import and export YAML, import profiles from Scrape Admin and keep them in sync.","gbjhz5VW4VhbKlUJXR-mBfM5FmseHoSq9vYP4NVI-jI",[582,584],{"title":88,"path":89,"stem":90,"description":583,"icon":91,"children":-1},"Bind a project to a Scrape Admin team with an API key, test the connection and manage the webhook secret.",{"title":98,"path":99,"stem":100,"description":585,"icon":101,"children":-1},"Set the default scrape schedule, the status codes that deactivate offers and the other project defaults.",1792440613148]