Install the Shovels add-on for Google Sheets, set your API key, and pull building permits into a spreadsheet with one formula.
The Shovels add-on for Google Sheets adds six formulas that return building permit and contractor data from the Shovels API. Type a formula in a cell and the results fill the rows below it, ready for filters, pivot tables, and charts.
Sheets vs. CLI vs. API: The add-on calls the same Shovels REST API and uses the same API key and credits. Use it when your work happens in spreadsheets. Use the CLI for terminals, scripts, and AI agents, and the API for product integrations.
Install Shovels from the Google Workspace Marketplace. The add-on is free to install. The formulas spend API credits from your Shovels plan.During the install, Google asks you to approve four permissions. The add-on needs them to write results into your spreadsheet, call the Shovels API, show its dialogs, and fetch results when someone edits the Sheet. See How do I install the add-on? for the full list.After the install, every Sheet has a Shovels menu under Extensions.
In your Sheet, choose Extensions → Shovels → Set API key…
Paste the key and click OK.
The add-on checks the key and shows how many credits it has used this month. The key is saved in this Sheet, so you set it once per Sheet.
Everyone who can edit the Sheet spends your key’s credits when they add or change a Shovels formula. Share a Sheet that holds your key only with people who may use your credits. See How does the API key work?
The cell shows Shovels: fetching… for a moment, then the permits for ZIP code 78701 in Austin, TX fill the Sheet, one permit per row, with a header row.
Type =SHOVELS in any cell to list the formulas. Once you pick one, Google Sheets describes each argument as you type it.
SHOVELS_PERMITS_BY_GEO takes four optional arguments after the location: a start date, an end date, a property type, and the maximum number of rows. This formula returns residential permits in 78701 from 2026:
Leave an argument empty to use its default. Type dates as text in quotation marks, or point to a cell that holds a date. A formula returns up to 2,500 permits unless you set the fifth argument.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Shovels Documentation","colors":{"primary":"#01654D","light":"#E8BD51","dark":"#01654D"},"logo":{"light":"https://mintcdn.com/shovelsai/RpZdSdGGx61eI0yq/assets/shovels-logo.png?fit=max\u0026auto=format\u0026n=RpZdSdGGx61eI0yq\u0026q=85\u0026s=4580f7cd0725b33ba31367d40fda3bbf","dark":"https://mintcdn.com/shovelsai/1PwAyN7q-VPDJL6r/assets/shovels-logo-dark.png?fit=max\u0026auto=format\u0026n=1PwAyN7q-VPDJL6r\u0026q=85\u0026s=48cea9b3276127273eefe9d0d6d9b0b8","href":"https://www.shovels.ai"},"favicon":"https://mintcdn.com/shovelsai/RpZdSdGGx61eI0yq/assets/favicon.png?fit=max\u0026auto=format\u0026n=RpZdSdGGx61eI0yq\u0026q=85\u0026s=fd9ec8e38b5dd0ef58cf2d43fdc71ec3","api":{"playground":{"display":"interactive"},"examples":{"languages":["curl","python","java","go","ruby","php"]},"mdx":{"server":"https://api.shovels.ai/v2"}},"background":{"color":{"light":"#fcfbf8","dark":"#101727"}},"navbar":{"links":[{"href":"mailto:support@shovels.ai","label":"Contact Support"}],"primary":{"type":"button","label":"Free Trial","href":"https://app.shovels.ai/login?mode=register"}},"footer":{"socials":{"discord":"https://discord.gg/Nypja3cKDx","github":"https://github.com/shovelsai","linkedin":"https://linkedin.com/company/shovels"}},"seo":{"metatags":{"og:site_name":"Shovels Documentation","og:type":"website","og:image":"https://docs.shovels.ai/assets/shovels-logo.png","twitter:card":"summary_large_image","twitter:site":"@shovelsai"},"indexing":"navigable"},"fonts":{"heading":{"family":"Poppins"},"body":{"family":"IBM Plex Sans"}},"styling":{"codeblocks":{"theme":{"light":"css-variables","dark":"css-variables"}},"latex":false},"navigation":{"global":{"anchors":[{"anchor":"Data Dictionary","icon":"book-open-cover","href":"https://www.shovels.ai/data-dictionary"},{"anchor":"Coverage Dashboard","icon":"map-pin","href":"https://www.shovels.ai/coverage"},{"anchor":"Community","icon":"discord","href":"https://discord.gg/Nypja3cKDx"},{"anchor":"Blog","icon":"newspaper","href":"https://www.shovels.ai/blog/"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"shovelsai","hasAudioNarration":false,"actualSubdomain":"shovelsai","customDomains":["docs.shovels.ai"],"gitSource":{"type":"github","owner":"shovelsai","repo":"shovels-docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6adbd7ddcb2a6e1965ff1db0","collectionId":"28b32820-6940-4451-966e-f24ab35690e3","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6adbd7ddcb2a6e1965ff1db0"},"feedback":{"thumbs":true,"edits":true,"issues":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6ae25e68f001fe32fd8de24d","clientVersion":"0.0.4006","searchFilterCounts":[{"language":"default","tag":"Knowledge Base","count":202},{"language":"default","tag":"API Reference","count":35},{"language":"default","tag":"Endpoints","count":34},{"language":"default","tag":"API Questions","count":30},{"language":"default","tag":"Data \u0026 Coverage","count":28},{"language":"default","tag":"Documentation","count":18},{"language":"default","tag":"Contractors","count":15},{"language":"default","tag":"Permits","count":12},{"language":"default","tag":"API Basics","count":10},{"language":"default","tag":"Shovels CLI","count":10}]},"assistantConfig":{},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-v7-file-tree","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"pause-universal-search-reconcile","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"per-site-search-delta","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-private-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-nav-generations","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-agent-model-picker","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":true},"customCss":[{"filePath":"style.css","content":"/* cyrillic-ext */\n@font-face {\n font-family: 'IBM Plex Mono';\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/ibmplexmono/v20/-F63fjptAgt5VM-kVkqdyU8n1iIq129k.woff2) format('woff2');\n unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;\n}\n/* cyrillic */\n@font-face {\n font-family: 'IBM Plex Mono';\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/ibmplexmono/v20/-F63fjptAgt5VM-kVkqdyU8n1isq129k.woff2) format('woff2');\n unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;\n}\n/* vietnamese */\n@font-face {\n font-family: 'IBM Plex Mono';\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/ibmplexmono/v20/-F63fjptAgt5VM-kVkqdyU8n1iAq129k.woff2) format('woff2');\n unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;\n}\n/* latin-ext */\n@font-face {\n font-family: 'IBM Plex Mono';\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/ibmplexmono/v20/-F63fjptAgt5VM-kVkqdyU8n1iEq129k.woff2) format('woff2');\n unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* latin */\n@font-face {\n font-family: 'IBM Plex Mono';\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/ibmplexmono/v20/-F63fjptAgt5VM-kVkqdyU8n1i8q1w.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n/* cyrillic-ext */\n@font-face {\n font-family: 'IBM Plex Mono';\n font-style: normal;\n font-weight: 500;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/ibmplexmono/v20/-F6qfjptAgt5VM-kVkqdyU8n3twJwl1FgtIU.woff2) format('woff2');\n unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;\n}\n/* cyrillic */\n@font-face {\n font-family: 'IBM Plex Mono';\n font-style: normal;\n font-weight: 500;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/ibmplexmono/v20/-F6qfjptAgt5VM-kVkqdyU8n3twJwlRFgtIU.woff2) format('woff2');\n unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;\n}\n/* vietnamese */\n@font-face {\n font-family: 'IBM Plex Mono';\n font-style: normal;\n font-weight: 500;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/ibmplexmono/v20/-F6qfjptAgt5VM-kVkqdyU8n3twJwl9FgtIU.woff2) format('woff2');\n unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;\n}\n/* latin-ext */\n@font-face {\n font-family: 'IBM Plex Mono';\n font-style: normal;\n font-weight: 500;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/ibmplexmono/v20/-F6qfjptAgt5VM-kVkqdyU8n3twJwl5FgtIU.woff2) format('woff2');\n unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* latin */\n@font-face {\n font-family: 'IBM Plex Mono';\n font-style: normal;\n font-weight: 500;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/ibmplexmono/v20/-F6qfjptAgt5VM-kVkqdyU8n3twJwlBFgg.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n/* cyrillic-ext */\n@font-face {\n font-family: 'IBM Plex Mono';\n font-style: normal;\n font-weight: 600;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/ibmplexmono/v20/-F6qfjptAgt5VM-kVkqdyU8n3vAOwl1FgtIU.woff2) format('woff2');\n unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;\n}\n/* cyrillic */\n@font-face {\n font-family: 'IBM Plex Mono';\n font-style: normal;\n font-weight: 600;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/ibmplexmono/v20/-F6qfjptAgt5VM-kVkqdyU8n3vAOwlRFgtIU.woff2) format('woff2');\n unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;\n}\n/* vietnamese */\n@font-face {\n font-family: 'IBM Plex Mono';\n font-style: normal;\n font-weight: 600;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/ibmplexmono/v20/-F6qfjptAgt5VM-kVkqdyU8n3vAOwl9FgtIU.woff2) format('woff2');\n unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;\n}\n/* latin-ext */\n@font-face {\n font-family: 'IBM Plex Mono';\n font-style: normal;\n font-weight: 600;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/ibmplexmono/v20/-F6qfjptAgt5VM-kVkqdyU8n3vAOwl5FgtIU.woff2) format('woff2');\n unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* latin */\n@font-face {\n font-family: 'IBM Plex Mono';\n font-style: normal;\n font-weight: 600;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/ibmplexmono/v20/-F6qfjptAgt5VM-kVkqdyU8n3vAOwlBFgg.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n:root{--shovels-ink:#101727;--shovels-ink-body:#1e293e;--shovels-ink-secondary:#6b695c;--shovels-label:#837e6c;--shovels-primary:#01654d;--shovels-emerald-dark-rgb:16 185 129;--shovels-emerald-dark:rgb(var(--shovels-emerald-dark-rgb));--shovels-on-emerald:#0e1420;--shovels-surface:#ffffff;--shovels-panel:#f9f7f1;--shovels-subtle:#f0ecdf;--shovels-rule:#e2dcc9;--shovels-rule-strong:#dad3bd;--shovels-dark-panel:#161d2c;--shovels-dark-subtle:#1a2338;--shovels-dark-rule:#2a3550;--shovels-dark-rule-strong:#33415e;--shovels-dark-ink:#d6d0c1;--shovels-dark-ink-secondary:#948d73;--shovels-dark-success-rgb:110 231 183;--shovels-dark-warning-rgb:233 190 81;--shovels-dark-error-rgb:217 135 98;--shovels-success-fill:#e6f2ee;--shovels-success-line:#c6d7ce;--shovels-success-ink:#014d3a;--shovels-warning-fill:#fdfaf0;--shovels-warning-line:#ecd9a4;--shovels-warning-ink:#7a5b18;--shovels-error-fill:#fdf2ee;--shovels-error-line:#a63d27;--shovels-error-ink:#8a3b28;--shovels-structure:Poppins, ui-sans-serif, system-ui, sans-serif;--shovels-identifier:'IBM Plex Mono', ui-monospace, SFMono-Regular, Menlo, monospace;--shovels-lift:0 1px 1px rgba(84, 72, 40, 0.04)}:root:not(.dark){--gray-50:250 249 244;--gray-100:244 241 231;--gray-200:233 228 212;--gray-300:216 209 188;--gray-400:148 142 122;--gray-500:121 116 95;--gray-600:107 105 92;--gray-700:30 41 62;--gray-800:23 32 50;--gray-900:16 23 39;--gray-950:10 15 26;--mint-foreground:var(--shovels-ink);--mint-background:transparent;--mint-token-keyword:var(--shovels-primary);--mint-token-function:var(--shovels-primary);--mint-token-string:#874d33;--mint-token-string-expression:#874d33;--mint-token-constant:#765817;--mint-token-parameter:#55622f;--mint-token-punctuation:#6b6652;--mint-token-comment:#6c6753;--mint-token-link:var(--shovels-primary)}#content-area table th,#sidebar .sidebar-title,.eyebrow{font-family:var(--shovels-structure);font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;line-height:1.4}:root:not(.dark) .eyebrow{color:var(--shovels-primary)}:root:not(.dark) #content-area table th,:root:not(.dark) #sidebar .sidebar-title{color:var(--shovels-ink-secondary)}:root.dark #content-area table th{color:var(--shovels-dark-ink-secondary)}#content-area .prose:not(.text-sm){font-size:15px;line-height:1.65}#content-area h1,#content-area h2,#content-area h3,#content-area h4{font-weight:600;letter-spacing:-.02em}:root{--font-paper-mono:var(--shovels-identifier)}code,kbd,pre,samp{font-family:var(--shovels-identifier)}:root:not(.dark) #content-area :not(pre)>code{color:var(--shovels-ink);background:var(--shovels-subtle);border:1px solid var(--shovels-rule)}:root.dark #content-area :not(pre)>code{color:var(--shovels-dark-ink);background:var(--shovels-dark-subtle);border:1px solid var(--shovels-dark-rule)}:root.dark{--mint-foreground:var(--shovels-dark-ink);--mint-background:transparent;--mint-token-keyword:var(--shovels-emerald-dark);--mint-token-function:var(--shovels-emerald-dark);--mint-token-string:#d98762;--mint-token-string-expression:#d98762;--mint-token-constant:#ba974a;--mint-token-parameter:#90a653;--mint-token-punctuation:var(--shovels-dark-ink-secondary);--mint-token-comment:#8c8670;--mint-token-link:var(--shovels-emerald-dark)}span[style*=\"--mint-token-function\"],span[style*=\"--mint-token-keyword\"]{font-weight:500;--shiki-dark-font-weight:500}#sidebar .sidebar-group a{font-family:var(--shovels-structure)}:root:not(.dark) #assistant-entry,:root:not(.dark) #search-bar-entry{background:var(--shovels-subtle);border:1px solid var(--shovels-rule)}:root:not(.dark) #assistant-entry *,:root:not(.dark) #search-bar-entry *{color:var(--shovels-ink-secondary)}:root.dark #assistant-entry,:root.dark #search-bar-entry{background:var(--shovels-dark-subtle);border:1px solid var(--shovels-dark-rule)}:root.dark #assistant-entry *,:root.dark #search-bar-entry *{color:var(--shovels-dark-ink-secondary)}#content-area .callout,#content-area .card{border-radius:10px}:root:not(.dark) #content-area .card{background:var(--shovels-surface);border-color:var(--shovels-rule);box-shadow:var(--shovels-lift)}#content-area table td{font-size:13px}#content-area table th{padding-top:8px;padding-bottom:8px;vertical-align:middle}#content-area details table td{overflow-wrap:anywhere}#content-area details table td:first-child{font-family:var(--shovels-identifier);font-weight:500}:root:not(.dark) #content-area table th{background:var(--shovels-subtle);border-bottom:1px solid var(--shovels-rule-strong)}:root:not(.dark) #content-area table td{border-bottom:1px solid var(--shovels-rule)}:root.dark #content-area table th{background:var(--shovels-dark-subtle);border-bottom:1px solid var(--shovels-dark-rule-strong)}:root.dark #content-area table td{border-bottom:1px solid var(--shovels-dark-rule)}:root:not(.dark) #content-area .callout[class*=bg-neutral-]{background:var(--shovels-panel);border-color:var(--shovels-rule)}:root:not(.dark) #content-area .callout[class*=bg-neutral-] svg{color:var(--shovels-label)}:root:not(.dark) #content-area .callout[class*=bg-blue-]{background:var(--shovels-subtle);border-color:var(--shovels-rule-strong)}:root:not(.dark) #content-area .callout[class*=bg-blue-] svg{color:var(--shovels-ink-secondary)}:root:not(.dark) #content-area .callout[class*=bg-green-]{background:var(--shovels-success-fill);border-color:var(--shovels-success-line)}:root:not(.dark) #content-area .callout[class*=bg-green-] svg{color:var(--shovels-primary)}:root:not(.dark) #content-area .callout[class*=bg-yellow-]{background:var(--shovels-warning-fill);border-color:var(--shovels-warning-line)}:root:not(.dark) #content-area .callout[class*=bg-yellow-] svg{color:var(--shovels-warning-ink)}:root:not(.dark) #content-area .callout[class*=bg-red-]{background:var(--shovels-error-fill);border-color:var(--shovels-error-line)}:root:not(.dark) #content-area .callout[class*=bg-red-] svg{color:var(--shovels-error-line)}:root:not(.dark) #content-area .callout[class*=bg-blue-] .prose,:root:not(.dark) #content-area .callout[class*=bg-neutral-] .prose{color:var(--shovels-ink-body)}:root:not(.dark) #content-area .callout[class*=bg-green-] .prose{color:var(--shovels-success-ink)}:root:not(.dark) #content-area .callout[class*=bg-yellow-] .prose{color:var(--shovels-warning-ink)}:root:not(.dark) #content-area .callout[class*=bg-red-] .prose{color:var(--shovels-error-ink)}:root.dark #content-area .callout[class*=bg-neutral-]{background:var(--shovels-dark-panel);border-color:var(--shovels-dark-rule)}:root.dark #content-area .callout[class*=bg-blue-] svg,:root.dark #content-area .callout[class*=bg-neutral-] svg{color:var(--shovels-dark-ink-secondary)}:root.dark #content-area .callout[class*=bg-blue-]{background:var(--shovels-dark-subtle);border-color:var(--shovels-dark-rule-strong)}:root.dark #content-area .callout[class*=bg-green-]{background:rgb(var(--shovels-dark-success-rgb)/.12);border-color:rgb(var(--shovels-dark-success-rgb)/.3)}:root.dark #content-area .callout[class*=bg-green-] svg{color:rgb(var(--shovels-dark-success-rgb))}:root.dark #content-area .callout[class*=bg-yellow-]{background:rgb(var(--shovels-dark-warning-rgb)/.12);border-color:rgb(var(--shovels-dark-warning-rgb)/.3)}:root.dark #content-area .callout[class*=bg-yellow-] svg{color:rgb(var(--shovels-dark-warning-rgb))}:root.dark #content-area .callout[class*=bg-red-]{background:rgb(var(--shovels-dark-error-rgb)/.12);border-color:rgb(var(--shovels-dark-error-rgb)/.3)}:root.dark #content-area .callout[class*=bg-red-] svg{color:rgb(var(--shovels-dark-error-rgb))}:root.dark #content-area .callout[class*=bg-blue-] .prose,:root.dark #content-area .callout[class*=bg-neutral-] .prose{color:var(--shovels-dark-ink)}:root.dark #content-area .callout[class*=bg-green-] .prose{color:rgb(var(--shovels-dark-success-rgb))}:root.dark #content-area .callout[class*=bg-yellow-] .prose{color:rgb(var(--shovels-dark-warning-rgb))}:root.dark #content-area .callout[class*=bg-red-] .prose{color:rgb(var(--shovels-dark-error-rgb))}:root:not(.dark){--accordion-background-color:var(--shovels-panel);--accordion-background-hover:var(--shovels-subtle);--accordion-icon-color:var(--shovels-label)}:root:not(.dark) .method-nav-pill [class*=\"2AB673\"],:root:not(.dark) .tryit-button[class*=\"2AB673\"]{background-color:var(--shovels-primary)}:root:not(.dark) .method-nav-pill [class*=bg-green-],:root:not(.dark) .method-pill[class*=bg-green-]{background-color:var(--shovels-success-fill);color:var(--shovels-primary)}:root.dark .method-nav-pill [class*=\"2AB673\"],:root.dark .tryit-button[class*=\"2AB673\"]{background-color:var(--shovels-emerald-dark);color:var(--shovels-on-emerald)}:root.dark .method-nav-pill [class*=bg-green-],:root.dark .method-pill[class*=bg-green-]{background-color:rgb(var(--shovels-emerald-dark-rgb)/.18);color:var(--shovels-emerald-dark)}:root.dark [class*=bg-primary-dark]{background-color:var(--shovels-emerald-dark)}:root.dark #topbar-cta-button,:root.dark #topbar-cta-button *{color:var(--shovels-on-emerald)}:root:not(.dark) #content-area [class*=bg-red-100]{background-color:var(--shovels-warning-fill);color:var(--shovels-warning-ink);box-shadow:inset 0 0 0 1px var(--shovels-warning-line)}:root.dark #content-area [class*=bg-red-100]{background-color:rgb(var(--shovels-dark-warning-rgb)/.12);color:rgb(var(--shovels-dark-warning-rgb));box-shadow:inset 0 0 0 1px rgb(var(--shovels-dark-warning-rgb)/.3)}"}],"page":{"pagePath":"docs/shovels-sheets-quickstart","slug":"/docs/shovels-sheets-quickstart","pageMetadata":{"title":"Shovels for Google Sheets Quickstart Guide","description":"Install the Shovels add-on for Google Sheets, set your API key, and pull building permits into a spreadsheet with one formula.","href":"/docs/shovels-sheets-quickstart"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Install the Shovels add-on for Google Sheets, set your API key, and pull building permits into a spreadsheet with one formula.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,li:`li`,ol:`ol`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,Heading,Info,OptimizedImage,Table,Tip,Warning}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Info)_missingMdxReference(`Info`,true);if(!OptimizedImage)_missingMdxReference(`OptimizedImage`,true);if(!Table)_missingMdxReference(`Table`,true);if(!Tip)_missingMdxReference(`Tip`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`The Shovels add-on for Google Sheets adds six formulas that return building permit and contractor data from the Shovels API.`}),` Type a formula in a cell and the results fill the rows below it, ready for filters, pivot tables, and charts.`]}),`\n`,_jsx(Info,{children:_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Sheets vs. CLI vs. API:`}),` The add-on calls the same Shovels REST API and uses the same API key and credits. Use it when your work happens in spreadsheets. Use the `,_jsx(_components.a,{href:`/docs/shovels-cli-quickstart`,children:`CLI`}),` for terminals, scripts, and AI agents, and the `,_jsx(_components.a,{href:`/docs/shovels-api-introduction`,children:`API`}),` for product integrations.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`install`,children:`Install`}),`\n`,_jsxs(_components.p,{children:[`Install `,_jsx(_components.strong,{children:`Shovels`}),` from the `,_jsx(_components.a,{href:`https://workspace.google.com/marketplace/app/shovels/946108628231`,children:`Google Workspace Marketplace`}),`. The add-on is free to install. The formulas spend API credits from your Shovels plan.`]}),`\n`,_jsxs(_components.p,{children:[`During the install, Google asks you to approve four permissions. The add-on needs them to write results into your spreadsheet, call the Shovels API, show its dialogs, and fetch results when someone edits the Sheet. See `,_jsx(_components.a,{href:`/docs/knowledge-base/sheets/installation`,children:`How do I install the add-on?`}),` for the full list.`]}),`\n`,_jsxs(_components.p,{children:[`After the install, every Sheet has a `,_jsx(_components.strong,{children:`Shovels`}),` menu under `,_jsx(_components.strong,{children:`Extensions`}),`.`]}),`\n`,_jsx(Heading,{level:`2`,id:`set-your-api-key`,children:`Set Your API Key`}),`\n`,_jsxs(_components.p,{children:[`You need a Shovels API key. If you don’t have one, `,_jsx(_components.a,{href:`https://app.shovels.ai/login?mode=register`,children:`create a free account`}),` to get a key on the Free plan.`]}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`Copy your key from the `,_jsx(_components.a,{href:`https://app.shovels.ai/account?tab=apikey`,children:`API key tab of your account`}),`.`]}),`\n`,_jsxs(_components.li,{children:[`In your Sheet, choose `,_jsx(_components.strong,{children:`Extensions → Shovels → Set API key…`})]}),`\n`,_jsxs(_components.li,{children:[`Paste the key and click `,_jsx(_components.strong,{children:`OK`}),`.`]}),`\n`]}),`\n`,_jsx(OptimizedImage,{src:`https://mintcdn.com/shovelsai/NT_L31wVoo9Afh_e/assets/screenshots/sheets-api-key-dialog.png?fit=max\u0026auto=format\u0026n=NT_L31wVoo9Afh_e\u0026q=85\u0026s=4a5be7822ab49c5ae4ffc92cf185d929`,alt:`Shovels API key dialog in Google Sheets`,\"data-og-width\":`1280`,width:`1280`,\"data-og-height\":`800`,height:`800`,\"data-path\":`assets/screenshots/sheets-api-key-dialog.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/shovelsai/NT_L31wVoo9Afh_e/assets/screenshots/sheets-api-key-dialog.png?w=280\u0026fit=max\u0026auto=format\u0026n=NT_L31wVoo9Afh_e\u0026q=85\u0026s=13563817500bc3c47e289f8df811b36d 280w, https://mintcdn.com/shovelsai/NT_L31wVoo9Afh_e/assets/screenshots/sheets-api-key-dialog.png?w=560\u0026fit=max\u0026auto=format\u0026n=NT_L31wVoo9Afh_e\u0026q=85\u0026s=854fb1afd04916c86c21b93045c7ec90 560w, https://mintcdn.com/shovelsai/NT_L31wVoo9Afh_e/assets/screenshots/sheets-api-key-dialog.png?w=840\u0026fit=max\u0026auto=format\u0026n=NT_L31wVoo9Afh_e\u0026q=85\u0026s=1c21810a4d7fd8ef0b00fa28c65a38f2 840w, https://mintcdn.com/shovelsai/NT_L31wVoo9Afh_e/assets/screenshots/sheets-api-key-dialog.png?w=1100\u0026fit=max\u0026auto=format\u0026n=NT_L31wVoo9Afh_e\u0026q=85\u0026s=8c75a28f0c9408e499ae7604f79e252d 1100w, https://mintcdn.com/shovelsai/NT_L31wVoo9Afh_e/assets/screenshots/sheets-api-key-dialog.png?w=1650\u0026fit=max\u0026auto=format\u0026n=NT_L31wVoo9Afh_e\u0026q=85\u0026s=703858c8e319be8fd73b9623a0677efb 1650w, https://mintcdn.com/shovelsai/NT_L31wVoo9Afh_e/assets/screenshots/sheets-api-key-dialog.png?w=2500\u0026fit=max\u0026auto=format\u0026n=NT_L31wVoo9Afh_e\u0026q=85\u0026s=ca28c06341f55c43889f2005ba018a2c 2500w`}),`\n`,_jsx(_components.p,{children:`The add-on checks the key and shows how many credits it has used this month. The key is saved in this Sheet, so you set it once per Sheet.`}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[`Everyone who can edit the Sheet spends your key’s credits when they add or change a Shovels formula. Share a Sheet that holds your key only with people who may use your credits. See `,_jsx(_components.a,{href:`/docs/knowledge-base/sheets/api-key`,children:`How does the API key work?`})]})}),`\n`,_jsx(Heading,{level:`2`,id:`run-your-first-formula`,children:`Run Your First Formula`}),`\n`,_jsx(_components.p,{children:`Type this formula in cell A1:`}),`\n`,_jsx(CodeBlock,{numberOfLines:`2`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes css-variables css-variables`,style:{backgroundColor:`var(--mint-background)`,\"--shiki-dark-bg\":`var(--mint-background)`,color:`var(--mint-foreground)`,\"--shiki-dark\":`var(--mint-foreground)`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`2`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`=SHOVELS_PERMITS_BY_GEO(\"78701\")`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`,_jsxs(_components.p,{children:[`The cell shows `,_jsx(_components.strong,{children:`Shovels: fetching…`}),` for a moment, then the permits for ZIP code 78701 in Austin, TX fill the Sheet, one permit per row, with a header row.`]}),`\n`,_jsx(OptimizedImage,{src:`https://mintcdn.com/shovelsai/NT_L31wVoo9Afh_e/assets/screenshots/sheets-permits-by-zip.png?fit=max\u0026auto=format\u0026n=NT_L31wVoo9Afh_e\u0026q=85\u0026s=dd49a01a7c88b2db8a149de38ef8be3e`,alt:`Permits for ZIP code 78701 in Google Sheets`,\"data-og-width\":`1280`,width:`1280`,\"data-og-height\":`800`,height:`800`,\"data-path\":`assets/screenshots/sheets-permits-by-zip.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/shovelsai/NT_L31wVoo9Afh_e/assets/screenshots/sheets-permits-by-zip.png?w=280\u0026fit=max\u0026auto=format\u0026n=NT_L31wVoo9Afh_e\u0026q=85\u0026s=a79ab4b5f0041066717a1cfa44776a1b 280w, https://mintcdn.com/shovelsai/NT_L31wVoo9Afh_e/assets/screenshots/sheets-permits-by-zip.png?w=560\u0026fit=max\u0026auto=format\u0026n=NT_L31wVoo9Afh_e\u0026q=85\u0026s=3dc72d9db729b93ed5a09fe97432e724 560w, https://mintcdn.com/shovelsai/NT_L31wVoo9Afh_e/assets/screenshots/sheets-permits-by-zip.png?w=840\u0026fit=max\u0026auto=format\u0026n=NT_L31wVoo9Afh_e\u0026q=85\u0026s=64ff8f2bb14b1a85c9968aa085ba045d 840w, https://mintcdn.com/shovelsai/NT_L31wVoo9Afh_e/assets/screenshots/sheets-permits-by-zip.png?w=1100\u0026fit=max\u0026auto=format\u0026n=NT_L31wVoo9Afh_e\u0026q=85\u0026s=b281dde117bd5b95ee0052a474f20c45 1100w, https://mintcdn.com/shovelsai/NT_L31wVoo9Afh_e/assets/screenshots/sheets-permits-by-zip.png?w=1650\u0026fit=max\u0026auto=format\u0026n=NT_L31wVoo9Afh_e\u0026q=85\u0026s=3ef90635878ad62c05a87d59c8a3db81 1650w, https://mintcdn.com/shovelsai/NT_L31wVoo9Afh_e/assets/screenshots/sheets-permits-by-zip.png?w=2500\u0026fit=max\u0026auto=format\u0026n=NT_L31wVoo9Afh_e\u0026q=85\u0026s=b1204b179289bd17d4d4009cdf1670fc 2500w`}),`\n`,_jsx(Tip,{children:_jsxs(_components.p,{children:[`Type `,_jsx(_components.code,{children:`=SHOVELS`}),` in any cell to list the formulas. Once you pick one, Google Sheets describes each argument as you type it.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`narrow-the-results`,children:`Narrow the Results`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`SHOVELS_PERMITS_BY_GEO`}),` takes four optional arguments after the location: a start date, an end date, a property type, and the maximum number of rows. This formula returns residential permits in 78701 from 2026:`]}),`\n`,_jsx(CodeBlock,{numberOfLines:`2`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes css-variables css-variables`,style:{backgroundColor:`var(--mint-background)`,\"--shiki-dark-bg\":`var(--mint-background)`,color:`var(--mint-foreground)`,\"--shiki-dark\":`var(--mint-foreground)`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`2`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`=SHOVELS_PERMITS_BY_GEO(\"78701\", \"2026-01-01\", , \"residential\")`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`,_jsx(_components.p,{children:`Leave an argument empty to use its default. Type dates as text in quotation marks, or point to a cell that holds a date. A formula returns up to 2,500 permits unless you set the fifth argument.`}),`\n`,_jsx(Heading,{level:`2`,id:`the-six-formulas`,children:`The Six Formulas`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Formula`}),_jsx(_components.th,{children:`Returns`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`SHOVELS_PERMITS_BY_GEO`})}),_jsx(_components.td,{children:`Permits for an address, a ZIP code, a state code, or a geo_id`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`SHOVELS_PERMITS_BY_CONTRACTOR`})}),_jsx(_components.td,{children:`Permits of one contractor, by Shovels contractor ID`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`SHOVELS_CONTRACTOR`})}),_jsx(_components.td,{children:`One row of contractor details for a name and a state`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`SHOVELS_CONTRACTOR_ID`})}),_jsx(_components.td,{children:`The Shovels ID of a contractor name in a state`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`SHOVELS_COUNTY`})}),_jsxs(_components.td,{children:[`The geo_id of a county, such as `,_jsx(_components.code,{children:`\"Harris, TX\"`})]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`SHOVELS_ADDRESS`})}),_jsx(_components.td,{children:`The geo_id of a street address`})]})]})]}),`\n`,_jsxs(_components.p,{children:[`See `,_jsx(_components.a,{href:`/docs/knowledge-base/sheets/formulas`,children:`What formulas does the add-on provide?`}),` for every argument and default.`]}),`\n`,_jsx(Heading,{level:`2`,id:`next-steps`,children:`Next Steps`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:_jsx(_components.a,{href:`/docs/knowledge-base/sheets/contractor-lookups`,children:`Look up a list of contractors by name`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.a,{href:`/docs/knowledge-base/sheets/permits-by-location`,children:`Get permits for an address, ZIP code, county, or state`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.a,{href:`/docs/knowledge-base/sheets/credits-and-refreshing`,children:`Understand credits, caching, and refreshing`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.a,{href:`/docs/knowledge-base/sheets/troubleshooting`,children:`Fix a cell that shows “fetching…” or an error`})}),`\n`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"codeStyling":{"theme":{"light":"css-variables","dark":"css-variables"}},"config":{},"pageMetadata":{"title":"Shovels for Google Sheets Quickstart Guide","description":"Install the Shovels add-on for Google Sheets, set your API key, and pull building permits into a spreadsheet with one formula.","href":"/docs/shovels-sheets-quickstart"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Install","slug":"install","depth":2,"children":[]},{"title":"Set Your API Key","slug":"set-your-api-key","depth":2,"children":[]},{"title":"Run Your First Formula","slug":"run-your-first-formula","depth":2,"children":[]},{"title":"Narrow the Results","slug":"narrow-the-results","depth":2,"children":[]},{"title":"The Six Formulas","slug":"the-six-formulas","depth":2,"children":[]},{"title":"Next Steps","slug":"next-steps","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"shovelsai","siteName":"Shovels Documentation","title":"Shovels for Google Sheets Quickstart Guide - Shovels Documentation","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-28T20:43:34.186Z","originalFileLocation":"docs/shovels-sheets-quickstart.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Install the Shovels add-on for Google Sheets, set your API key, and pull building permits into a spreadsheet with one formula.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Shovels Documentation\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/shovelsai/0tzx6OgdpifPiQBm/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/shovelsai/0tzx6OgdpifPiQBm/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/shovelsai/0tzx6OgdpifPiQBm/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/shovelsai/0tzx6OgdpifPiQBm/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/shovelsai/0tzx6OgdpifPiQBm/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/shovelsai/0tzx6OgdpifPiQBm/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/shovelsai/0tzx6OgdpifPiQBm/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/shovelsai/0tzx6OgdpifPiQBm/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/shovelsai/0tzx6OgdpifPiQBm/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Shovels for Google Sheets Quickstart Guide - Shovels Documentation\">\u003cmeta data-mint-head property=\"og:description\" content=\"Install the Shovels add-on for Google Sheets, set your API key, and pull building permits into a spreadsheet with one formula.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Shovels Documentation\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.shovels.ai/docs/shovels-sheets-quickstart\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://docs.shovels.ai/assets/shovels-logo.png\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Shovels for Google Sheets Quickstart Guide - Shovels Documentation\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Install the Shovels add-on for Google Sheets, set your API key, and pull building permits into a spreadsheet with one formula.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://docs.shovels.ai/assets/shovels-logo.png\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/shovelsai/0tzx6OgdpifPiQBm/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Shovels Documentation\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#01654D\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.shovels.ai/docs/shovels-sheets-quickstart\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/docs/shovels-sheets-quickstart.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.shovels.ai/#organization\",\"name\":\"Shovels Documentation\",\"url\":\"https://docs.shovels.ai\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/shovelsai/RpZdSdGGx61eI0yq/assets/shovels-logo.png?fit=max\u0026auto=format\u0026n=RpZdSdGGx61eI0yq\u0026q=85\u0026s=4580f7cd0725b33ba31367d40fda3bbf\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.shovels.ai#website\",\"name\":\"Shovels Documentation\",\"url\":\"https://docs.shovels.ai\",\"publisher\":{\"@id\":\"https://docs.shovels.ai/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.shovels.ai/docs/shovels-sheets-quickstart#webpage\",\"url\":\"https://docs.shovels.ai/docs/shovels-sheets-quickstart\",\"name\":\"Shovels for Google Sheets Quickstart Guide\",\"description\":\"Install the Shovels add-on for Google Sheets, set your API key, and pull building permits into a spreadsheet with one formula.\",\"dateModified\":\"2026-10-28T20:43:34.186Z\",\"isPartOf\":{\"@id\":\"https://docs.shovels.ai#website\"},\"breadcrumb\":{\"@id\":\"https://docs.shovels.ai/docs/shovels-sheets-quickstart#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.shovels.ai/docs/shovels-sheets-quickstart#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Shovels Documentation\",\"item\":\"https://docs.shovels.ai\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Shovels for Google Sheets Quickstart Guide\",\"item\":\"https://docs.shovels.ai/docs/shovels-sheets-quickstart\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.shovels.ai/docs/shovels-sheets-quickstart#article\",\"headline\":\"Shovels for Google Sheets Quickstart Guide\",\"name\":\"Shovels for Google Sheets Quickstart Guide\",\"description\":\"Install the Shovels add-on for Google Sheets, set your API key, and pull building permits into a spreadsheet with one formula.\",\"url\":\"https://docs.shovels.ai/docs/shovels-sheets-quickstart\",\"mainEntityOfPage\":{\"@id\":\"https://docs.shovels.ai/docs/shovels-sheets-quickstart#webpage\"},\"image\":\"https://docs.shovels.ai/assets/shovels-logo.png\",\"dateModified\":\"2026-10-28T20:43:34.186Z\",\"publisher\":{\"@id\":\"https://docs.shovels.ai/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.shovels.ai#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Shovels Documentation\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Shovels Documentation","nav":{"global":{"anchors":[{"anchor":"Data Dictionary","icon":"book-open-cover","href":"https://www.shovels.ai/data-dictionary"},{"anchor":"Coverage Dashboard","icon":"map-pin","href":"https://www.shovels.ai/coverage"},{"anchor":"Community","icon":"discord","href":"https://discord.gg/Nypja3cKDx"},{"anchor":"Blog","icon":"newspaper","href":"https://www.shovels.ai/blog/"}]},"tabs":[{"tab":"Documentation","groups":[{"group":"Overview","pages":[{"title":"Welcome to Shovels","href":"/docs/introduction"}]},{"group":"Shovels Online","pages":[{"title":"Shovels Online Quickstart Guide","href":"/docs/shovels-online-quickstart-guide"}]},{"group":"Shovels API","pages":[{"title":"Introducing the Shovels API","href":"/docs/shovels-api-introduction"}]},{"group":"Shovels CLI","pages":[{"title":"Shovels CLI Quickstart Guide","description":"Install the Shovels CLI, configure your API key, and run your first permit search in under a minute.","href":"/docs/shovels-cli-quickstart"}]},{"group":"Shovels for Google Sheets","pages":[{"title":"Shovels for Google Sheets Quickstart Guide","href":"/docs/shovels-sheets-quickstart"}]},{"group":"Tutorials","pages":[{"group":"Shovels Online","pages":[{"title":"Building an Accurate Contractor Search","description":"This tutorial will help you build an accurate search query in Shovels Online to find Contractors.","href":"/docs/tutorial-online-contractor-search"}]},{"group":"Shovels CLI","pages":[{"title":"Building a Contractor Pipeline with the CLI","href":"/docs/tutorial-cli-contractor-pipeline"}]},{"group":"Shovels API","pages":[{"title":"Retrieving Permit History for an Address","href":"/docs/tutorial-api-address-permit-history"}]}]},{"group":"Troubleshooting","pages":[{"title":"FAQ","href":"/docs/shovels-faq"},{"title":"Shovels Online Troubleshooting","href":"/docs/shovels-online-troubleshooting"},{"title":"Shovels API Troubleshooting","href":"/docs/shovels-api-troubleshooting"}]},{"group":"Platform Reference","pages":[{"group":"Data Dictionaries","pages":[{"title":"Overview","href":"/docs/data-dictionary-index"},{"title":"Online","href":"/docs/data-dictionary-online"},{"title":"API","href":"/docs/data-dictionary-api"},{"title":"Enterprise Data License","mode":"wide","href":"/docs/data-dictionary-edl"}]}]},{"group":"Shovels Foundations","pages":[{"title":"Building Blocks","href":"/docs/foundations-building-blocks"},{"title":"Data Philosophy","href":"/docs/foundations-data-philosophy"},{"title":"Permit Availability","href":"/docs/foundations-understanding-permits"}]}]},{"tab":"API Reference","pages":[{"title":"API Reference","href":"/docs/api-reference-about"}]},{"tab":"Release Notes","pages":[{"title":"Release Notes","href":"/release-notes/release-notes"}]},{"tab":"Knowledge Base","pages":[{"title":"Knowledge Base","href":"/docs/knowledge-base"}]}]},"title":"Shovels for Google Sheets Quickstart Guide - Shovels Documentation","buildId":"dpl_2xiSHD9XEvLsPGPcfoMtkLTB3dy9","deploymentId":"dpl_2xiSHD9XEvLsPGPcfoMtkLTB3dy9","dynamics":["a74be98ba7"],"chunks":["zoom-image-lightbox-BNnMwe0F.js","lightbox-handle-r17bVUz3.js"]}