{"id":87528,"date":"2025-02-14T10:43:39","date_gmt":"2025-02-14T10:43:39","guid":{"rendered":"https:\/\/peraltafinancing.com\/analytics\/cookie-audit-with-google-bigquery\/"},"modified":"2025-02-14T10:43:39","modified_gmt":"2025-02-14T10:43:39","slug":"cookie-audit-with-google-bigquery","status":"publish","type":"post","link":"https:\/\/fivemor.com\/?p=87528","title":{"rendered":"Cookie Audit With Google BigQuery"},"content":{"rendered":"<p> <br \/>\n<\/p>\n<div>\n<p>On New Year\u2019s Eve 2018, I published an article which instructed <a href=\"https:\/\/www.simoahava.com\/google-cloud\/scrape-domain-and-write-results-to-bigquery\/\">how to scrape pages of a site and write the results into Google BigQuery<\/a>. I considered it to be a cool way to build your own web scraper, as it utilized the power and scale of the Google Cloud platform combined with the flexibility of a <a href=\"https:\/\/github.com\/yujiosaka\/headless-chrome-crawler\">headless crawler<\/a> built on top of <a href=\"https:\/\/github.com\/puppeteer\/puppeteer\">Puppeteer<\/a>.<\/p>\n<p>In today\u2019s article, I\u2019m revisiting this solution in order to share with you its latest version, which includes a feature that you might find extremely useful when <a href=\"https:\/\/ico.org.uk\/for-organisations\/guide-to-pecr\/guidance-on-the-use-of-cookies-and-similar-technologies\/how-do-we-comply-with-the-cookie-rules\/\">auditing the cookies<\/a> that are dropped on your site.<\/p>\n<div style=\"aspect-ratio: 1200 \/ 1078;\" class=\"figure nocaption\">\n<p>    <a href=\"https:\/\/www.simoahava.com\/images\/2020\/06\/scrape-cookies-bigquery.jpg\" title=\"Scrape cookies and write to BigQuery\"><\/p>\n<p>    <img decoding=\"async\" class=\"fig-img\" height=\"1078\" width=\"1200\" loading=\"lazy\" src=\"https:\/\/www.simoahava.com\/images\/2020\/06\/scrape-cookies-bigquery.jpg#ZgotmplZ\" alt=\"Scrape cookies and write to BigQuery\"\/><\/p>\n<p>    <\/a><\/p>\n<\/div>\n<p>The purpose of this exercise is to list <em>all<\/em> the cookies, both <a href=\"https:\/\/www.cookiestatus.com\/introduction\/tracking-protection\/#first-party-and-third-party-context\">1st party and 3rd party<\/a>, the crawler encounters when automatically following links within your site. This way you have an idea of what cookie storage is actually being utilized on your site.<\/p>\n<p>You can use this information to proactively audit and annotate the cookie use on your site, which is helpful in case you are striving for compliance with EU\u2019s <a href=\"https:\/\/ico.org.uk\/for-organisations\/guide-to-pecr\/guidance-on-the-use-of-cookies-and-similar-technologies\/how-do-we-comply-with-the-cookie-rules\/\">cookie regulation<\/a>, for example.<\/p>\n<p>                <span class=\"simmer\"><br \/>\n  <span class=\"close\">X<\/span><\/p>\n<p>\n    <span class=\"fa fa-md fa-bell\"\/><br \/>\n    <strong>The Simmer Newsletter<\/strong>\n  <\/p>\n<p>\n    Subscribe to the <a href=\"https:\/\/www.simoahava.com\/newsletter\/\">Simmer newsletter<\/a> to get the latest news and content from Simo Ahava into your email inbox!\n  <\/p>\n<p>  <\/span><\/p>\n<h2 id=\"how-to-set-it-up\">How to set it up<\/h2>\n<p>This is the easy part: you follow the <strong>exact<\/strong> steps as outlined in the <a href=\"https:\/\/www.simoahava.com\/google-cloud\/scrape-domain-and-write-results-to-bigquery\/\">original article<\/a>. The only change you might want to do is set the config flag <code>skipExternal<\/code> to <code>true<\/code> in the <code>config.json<\/code> file, which means that the crawler will no longer crawl external pages that are linked to from your site. This was originally done to get the HTTP status codes of external links, but as you\u2019re focusing on a cookie audit, external pages would just add to the confusion.<\/p>\n<div style=\"aspect-ratio: 932 \/ 588;\" class=\"figure nocaption\">\n<p>    <a href=\"https:\/\/www.simoahava.com\/images\/2020\/06\/config-example.jpg\" title=\"Config example\"><\/p>\n<p>    <img decoding=\"async\" class=\"fig-img\" height=\"588\" width=\"932\" loading=\"lazy\" src=\"https:\/\/www.simoahava.com\/images\/2020\/06\/config-example.jpg#ZgotmplZ\" alt=\"Config example\"\/><\/p>\n<p>    <\/a><\/p>\n<\/div>\n<p>Other than that small change, just follow the steps in the original article. Just to recap, you should have the following:<\/p>\n<ol>\n<li>A <strong>Google Cloud Project<\/strong> with the <a href=\"https:\/\/www.simoahava.com\/google-cloud\/scrape-domain-and-write-results-to-bigquery\/#make-sure-the-required-services-have-been-enabled-in-google-cloud-platform\">necessary APIs<\/a> enabled.<\/li>\n<li>The <strong>config.json<\/strong> file <a href=\"https:\/\/www.simoahava.com\/google-cloud\/scrape-domain-and-write-results-to-bigquery\/#upload-the-configuration-to-gcs\">stored in a Google Cloud storage bucket<\/a>.<\/li>\n<li>The <code>gce-install.sh<\/code> script <a href=\"https:\/\/www.simoahava.com\/google-cloud\/scrape-domain-and-write-results-to-bigquery\/#edit-the-install-script\">modified<\/a> with the URL to the config file in the storage bucket.<\/li>\n<li>Ability to run the <a href=\"https:\/\/www.simoahava.com\/google-cloud\/scrape-domain-and-write-results-to-bigquery\/#create-the-gce-vm-instance\">command-line script<\/a> that creates the virtual machine instance.<\/li>\n<\/ol>\n<p>Once the virtual machine fires up, assuming you\u2019ve followed the instructions meticulously, you\u2019ll end up with a BigQuery table that collects a stream of scraped pages, together with the newly added cookie metadata as well.<\/p>\n<div style=\"aspect-ratio: 3796 \/ 854;\" class=\"figure nocaption\">\n<p>    <a href=\"https:\/\/www.simoahava.com\/images\/2020\/06\/bigquery-metadata.jpg\" title=\"BigQuery table\"><\/p>\n<p>    <img decoding=\"async\" class=\"fig-img\" height=\"854\" width=\"3796\" loading=\"lazy\" src=\"https:\/\/www.simoahava.com\/images\/2020\/06\/bigquery-metadata.jpg#ZgotmplZ\" alt=\"BigQuery table\"\/><\/p>\n<p>    <\/a><\/p>\n<\/div>\n<p>The crawler scans cookies in both 1st party and 3rd party requests. Cookie information is parsed for <strong>name<\/strong>, <strong>value<\/strong>, <strong>size<\/strong>, <strong>domain<\/strong>, <strong>path<\/strong>, <strong>expiration<\/strong>, <strong>HttpOnly<\/strong>, <strong>secure<\/strong>, and <strong>SameSite<\/strong>.<\/p>\n<h2 id=\"sample-queries\">Sample queries<\/h2>\n<p>Once you have the data in the table, here are some BigQuery SQL queries you can run to make the most of the new information.<\/p>\n<p>The first query is simple: it gets you the crawled URL together with all the cookies dropped on the site.<\/p>\n<div class=\"highlight\">\n<pre style=\"background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4\"><code class=\"language-sql\" data-lang=\"sql\"><span style=\"color:#00a\">SELECT<\/span>\n  final_url,\n  cookies\n<span style=\"color:#00a\">FROM<\/span>\n  `project.dataset.<span style=\"color:#00a\">table<\/span>`<\/code><\/pre>\n<\/div>\n<div style=\"aspect-ratio: 4466 \/ 1330;\" class=\"figure nocaption\">\n<p>    <a href=\"https:\/\/www.simoahava.com\/images\/2020\/06\/all-cookies.jpg\" title=\"All cookies\"><\/p>\n<p>    <img decoding=\"async\" class=\"fig-img\" height=\"1330\" width=\"4466\" loading=\"lazy\" src=\"https:\/\/www.simoahava.com\/images\/2020\/06\/all-cookies.jpg#ZgotmplZ\" alt=\"All cookies\"\/><\/p>\n<p>    <\/a><\/p>\n<\/div>\n<p>This second query returns just the cookies, grouping similar cookies together. It\u2019s a handy way to get a list of all the distinct cookies dropped during the crawl. Each cookie with a <strong>domain<\/strong> namespace different from your own is a <strong>3rd party cookie<\/strong> (unless you neglected to set the <code>skipExternal<\/code> flag to <code>true<\/code> in the configuration step).<\/p>\n<div class=\"highlight\">\n<pre style=\"background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4\"><code class=\"language-sql\" data-lang=\"sql\"><span style=\"color:#00a\">SELECT<\/span>\n  <span style=\"color:#00a\">c<\/span>.name,\n  <span style=\"color:#00a\">c<\/span>.<span style=\"color:#00a\">domain<\/span>,\n  <span style=\"color:#00a\">c<\/span>.httpOnly,\n  <span style=\"color:#00a\">c<\/span>.secure,\n  <span style=\"color:#00a\">c<\/span>.<span style=\"color:#00a\">session<\/span>,\n  <span style=\"color:#00a\">c<\/span>.sameSite\n<span style=\"color:#00a\">FROM<\/span>\n  `project.dataset.<span style=\"color:#00a\">table<\/span>`,\n  <span style=\"color:#00a\">UNNEST<\/span>(cookies) <span style=\"color:#00a\">AS<\/span> <span style=\"color:#00a\">c<\/span>\n<span style=\"color:#00a\">GROUP<\/span> <span style=\"color:#00a\">BY<\/span>\n  <span style=\"color:#099\">1<\/span>, <span style=\"color:#099\">2<\/span>, <span style=\"color:#099\">3<\/span>, <span style=\"color:#099\">4<\/span>, <span style=\"color:#099\">5<\/span>, <span style=\"color:#099\">6<\/span>\n<span style=\"color:#00a\">ORDER<\/span> <span style=\"color:#00a\">BY<\/span>\n  <span style=\"color:#099\">1<\/span> <span style=\"color:#00a\">ASC<\/span><\/code><\/pre>\n<\/div>\n<p>You can find a screenshot of the result at the very beginning of this article.<\/p>\n<h2 id=\"caveats\">Caveats<\/h2>\n<p>There are some caveats to this solution.<\/p>\n<p>Dynamic sites that reveal navigation links only upon a click, or that load content with lazy-load, will need to be manually configured into a <a href=\"https:\/\/github.com\/yujiosaka\/headless-chrome-crawler\/blob\/master\/examples\/custom-crawl.js\">custom crawler<\/a> utilizing <a href=\"https:\/\/github.com\/puppeteer\/puppeteer\/blob\/master\/docs\/api.md#class-page\">Puppeteer\u2019s <code>page<\/code> APIs<\/a>. It\u2019s not trivial to set up, as you\u2019ll basically need to add <em>only<\/em> the links scraped from a dynamic navigation click (or lazy-load event) into the <code>headless-chrome-crawler<\/code> queue to avoid duplication.<\/p>\n<p>Another problem is that there might be cookies that are set only upon the user interacting with the site. Prime example is a login event, or a conversion event that doesn\u2019t rely on a retargeting cookie (which would have fired with the page load). In these cases, a comprehensive cookie audit would need the crawler to be configured with these custom navigation paths, so that all cookies would be audited accordingly.<\/p>\n<p>It\u2019s also possible that some vendors can detect crawlers and prevent their SDKs from dropping any cookies.<\/p>\n<p>In any case, the solution described here should be a starting point for a more comprehensive storage audit. It doesn\u2019t tackle other forms of stateful storage (e.g. <code>localStorage<\/code> or <code>IndexedDB<\/code>), but it does give you an idea of what cookie storage the scripts and tags running on your site utilize.<\/p>\n<h2 id=\"summary\">Summary<\/h2>\n<p>Hopefully this article inspires you to take a look at the <a href=\"https:\/\/github.com\/sahava\/web-scraper-gcp\">web-scraper-gcp<\/a> project again, especially with the updated cookie crawling capabilities. I believe every single organization in the world should be exercising this type of oversight and governance in the name of accountability. You owe it to your site visitors. And, if your practices fall under legal regulation from e.g. GDPR or California\u2019s <a href=\"https:\/\/www.osano.com\/articles\/cpra\">CPRA<\/a>, you should be <em>very<\/em> interested in knowing what browser storage is utilized on your site.<\/p>\n<p>The <code>headless-chrome-crawler<\/code> project hasn\u2019t been updated for a couple of years, but it still works. I\u2019m hoping to fork it one day and fix the dependency issues, which you might have noticed if running the solution locally.<\/p>\n<p>Let me know in the comments if you have questions or feedback about the solution &#8211; I\u2019m happy to help if I can!<\/p>\n<\/p><\/div>\n\n","protected":false},"excerpt":{"rendered":"<p>On New Year\u2019s Eve 2018, I published an article which instructed how to scrape pages of a site and write the results into Google BigQuery. I considered it to be a cool way to build your own web scraper, as it utilized the power and scale of the Google Cloud platform combined with the flexibility [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":87529,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[12033],"tags":[16404,28608,14315,1531],"dealstore":[],"offerexpiration":[],"class_list":["post-87528","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-analytics","tag-audit","tag-bigquery","tag-cookie","tag-google"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.4 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Cookie Audit With Google BigQuery - Som2ny Network<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fivemor.com\/?p=87528\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Cookie Audit With Google BigQuery - Som2ny Network\" \/>\n<meta property=\"og:description\" content=\"On New Year\u2019s Eve 2018, I published an article which instructed how to scrape pages of a site and write the results into Google BigQuery. I considered it to be a cool way to build your own web scraper, as it utilized the power and scale of the Google Cloud platform combined with the flexibility [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fivemor.com\/?p=87528\" \/>\n<meta property=\"og:site_name\" content=\"Som2ny Network\" \/>\n<meta property=\"article:published_time\" content=\"2025-02-14T10:43:39+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/fivemor.com\/wp-content\/uploads\/2025\/02\/scrape-cookies-bigquery.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"1078\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"admin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"admin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fivemor.com\/?p=87528#article\",\"isPartOf\":{\"@id\":\"https:\/\/fivemor.com\/?p=87528\"},\"author\":{\"name\":\"admin\",\"@id\":\"https:\/\/fivemor.com\/#\/schema\/person\/b85e3c3dc0e1daea076524dc8810c371\"},\"headline\":\"Cookie Audit With Google BigQuery\",\"datePublished\":\"2025-02-14T10:43:39+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fivemor.com\/?p=87528\"},\"wordCount\":898,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fivemor.com\/#organization\"},\"image\":{\"@id\":\"https:\/\/fivemor.com\/?p=87528#primaryimage\"},\"thumbnailUrl\":\"https:\/\/fivemor.com\/wp-content\/uploads\/2025\/02\/scrape-cookies-bigquery.jpg\",\"keywords\":[\"Audit\",\"BigQuery\",\"Cookie\",\"Google\"],\"articleSection\":[\"Analytics\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fivemor.com\/?p=87528#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fivemor.com\/?p=87528\",\"url\":\"https:\/\/fivemor.com\/?p=87528\",\"name\":\"Cookie Audit With Google BigQuery - Som2ny Network\",\"isPartOf\":{\"@id\":\"https:\/\/fivemor.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/fivemor.com\/?p=87528#primaryimage\"},\"image\":{\"@id\":\"https:\/\/fivemor.com\/?p=87528#primaryimage\"},\"thumbnailUrl\":\"https:\/\/fivemor.com\/wp-content\/uploads\/2025\/02\/scrape-cookies-bigquery.jpg\",\"datePublished\":\"2025-02-14T10:43:39+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fivemor.com\/?p=87528#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fivemor.com\/?p=87528\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/fivemor.com\/?p=87528#primaryimage\",\"url\":\"https:\/\/fivemor.com\/wp-content\/uploads\/2025\/02\/scrape-cookies-bigquery.jpg\",\"contentUrl\":\"https:\/\/fivemor.com\/wp-content\/uploads\/2025\/02\/scrape-cookies-bigquery.jpg\",\"width\":1200,\"height\":1078},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fivemor.com\/?p=87528#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/fivemor.com\/?bp_activities=1\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Cookie Audit With Google BigQuery\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fivemor.com\/#website\",\"url\":\"https:\/\/fivemor.com\/\",\"name\":\"Som2ny Network\",\"description\":\"Daily Deals\",\"publisher\":{\"@id\":\"https:\/\/fivemor.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fivemor.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/fivemor.com\/#organization\",\"name\":\"Som2ny Network\",\"url\":\"https:\/\/fivemor.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/fivemor.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/fivemor.com\/wp-content\/uploads\/2026\/07\/4a0953c4-logo-300x86-1.png\",\"contentUrl\":\"https:\/\/fivemor.com\/wp-content\/uploads\/2026\/07\/4a0953c4-logo-300x86-1.png\",\"width\":300,\"height\":86,\"caption\":\"Som2ny Network\"},\"image\":{\"@id\":\"https:\/\/fivemor.com\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/fivemor.com\/#\/schema\/person\/b85e3c3dc0e1daea076524dc8810c371\",\"name\":\"admin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/fivemor.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/729ae85bf62b9917e93538db2f2688ca?s=96&r=g&default=https%3A%2F%2Ffivemor.com%2Fwp-content%2Fplugins%2Fbuddypress-first-letter-avatar%2Fimages%2Fdefault%2F96%2Flatin_a.png\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/729ae85bf62b9917e93538db2f2688ca?s=96&r=g&default=https%3A%2F%2Ffivemor.com%2Fwp-content%2Fplugins%2Fbuddypress-first-letter-avatar%2Fimages%2Fdefault%2F96%2Flatin_a.png\",\"caption\":\"admin\"},\"sameAs\":[\"https:\/\/fivemor.com\"],\"url\":\"https:\/\/fivemor.com\/?author=1\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Cookie Audit With Google BigQuery - Som2ny Network","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fivemor.com\/?p=87528","og_locale":"en_US","og_type":"article","og_title":"Cookie Audit With Google BigQuery - Som2ny Network","og_description":"On New Year\u2019s Eve 2018, I published an article which instructed how to scrape pages of a site and write the results into Google BigQuery. I considered it to be a cool way to build your own web scraper, as it utilized the power and scale of the Google Cloud platform combined with the flexibility [&hellip;]","og_url":"https:\/\/fivemor.com\/?p=87528","og_site_name":"Som2ny Network","article_published_time":"2025-02-14T10:43:39+00:00","og_image":[{"width":1200,"height":1078,"url":"https:\/\/fivemor.com\/wp-content\/uploads\/2025\/02\/scrape-cookies-bigquery.jpg","type":"image\/jpeg"}],"author":"admin","twitter_card":"summary_large_image","twitter_misc":{"Written by":"admin","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fivemor.com\/?p=87528#article","isPartOf":{"@id":"https:\/\/fivemor.com\/?p=87528"},"author":{"name":"admin","@id":"https:\/\/fivemor.com\/#\/schema\/person\/b85e3c3dc0e1daea076524dc8810c371"},"headline":"Cookie Audit With Google BigQuery","datePublished":"2025-02-14T10:43:39+00:00","mainEntityOfPage":{"@id":"https:\/\/fivemor.com\/?p=87528"},"wordCount":898,"commentCount":0,"publisher":{"@id":"https:\/\/fivemor.com\/#organization"},"image":{"@id":"https:\/\/fivemor.com\/?p=87528#primaryimage"},"thumbnailUrl":"https:\/\/fivemor.com\/wp-content\/uploads\/2025\/02\/scrape-cookies-bigquery.jpg","keywords":["Audit","BigQuery","Cookie","Google"],"articleSection":["Analytics"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fivemor.com\/?p=87528#respond"]}]},{"@type":"WebPage","@id":"https:\/\/fivemor.com\/?p=87528","url":"https:\/\/fivemor.com\/?p=87528","name":"Cookie Audit With Google BigQuery - Som2ny Network","isPartOf":{"@id":"https:\/\/fivemor.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/fivemor.com\/?p=87528#primaryimage"},"image":{"@id":"https:\/\/fivemor.com\/?p=87528#primaryimage"},"thumbnailUrl":"https:\/\/fivemor.com\/wp-content\/uploads\/2025\/02\/scrape-cookies-bigquery.jpg","datePublished":"2025-02-14T10:43:39+00:00","breadcrumb":{"@id":"https:\/\/fivemor.com\/?p=87528#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fivemor.com\/?p=87528"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/fivemor.com\/?p=87528#primaryimage","url":"https:\/\/fivemor.com\/wp-content\/uploads\/2025\/02\/scrape-cookies-bigquery.jpg","contentUrl":"https:\/\/fivemor.com\/wp-content\/uploads\/2025\/02\/scrape-cookies-bigquery.jpg","width":1200,"height":1078},{"@type":"BreadcrumbList","@id":"https:\/\/fivemor.com\/?p=87528#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/fivemor.com\/?bp_activities=1"},{"@type":"ListItem","position":2,"name":"Cookie Audit With Google BigQuery"}]},{"@type":"WebSite","@id":"https:\/\/fivemor.com\/#website","url":"https:\/\/fivemor.com\/","name":"Som2ny Network","description":"Daily Deals","publisher":{"@id":"https:\/\/fivemor.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fivemor.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/fivemor.com\/#organization","name":"Som2ny Network","url":"https:\/\/fivemor.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/fivemor.com\/#\/schema\/logo\/image\/","url":"https:\/\/fivemor.com\/wp-content\/uploads\/2026\/07\/4a0953c4-logo-300x86-1.png","contentUrl":"https:\/\/fivemor.com\/wp-content\/uploads\/2026\/07\/4a0953c4-logo-300x86-1.png","width":300,"height":86,"caption":"Som2ny Network"},"image":{"@id":"https:\/\/fivemor.com\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/fivemor.com\/#\/schema\/person\/b85e3c3dc0e1daea076524dc8810c371","name":"admin","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/fivemor.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/729ae85bf62b9917e93538db2f2688ca?s=96&r=g&default=https%3A%2F%2Ffivemor.com%2Fwp-content%2Fplugins%2Fbuddypress-first-letter-avatar%2Fimages%2Fdefault%2F96%2Flatin_a.png","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/729ae85bf62b9917e93538db2f2688ca?s=96&r=g&default=https%3A%2F%2Ffivemor.com%2Fwp-content%2Fplugins%2Fbuddypress-first-letter-avatar%2Fimages%2Fdefault%2F96%2Flatin_a.png","caption":"admin"},"sameAs":["https:\/\/fivemor.com"],"url":"https:\/\/fivemor.com\/?author=1"}]}},"_links":{"self":[{"href":"https:\/\/fivemor.com\/index.php?rest_route=\/wp\/v2\/posts\/87528","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fivemor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fivemor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fivemor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fivemor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=87528"}],"version-history":[{"count":0,"href":"https:\/\/fivemor.com\/index.php?rest_route=\/wp\/v2\/posts\/87528\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/fivemor.com\/index.php?rest_route=\/wp\/v2\/media\/87529"}],"wp:attachment":[{"href":"https:\/\/fivemor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=87528"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fivemor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=87528"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fivemor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=87528"},{"taxonomy":"dealstore","embeddable":true,"href":"https:\/\/fivemor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fdealstore&post=87528"},{"taxonomy":"offerexpiration","embeddable":true,"href":"https:\/\/fivemor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fofferexpiration&post=87528"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}