Skip to main content
Multiple Google accounts: The add-on must run under the first (default) Google account in your browser profile. If you are logged into multiple accounts, you may not be able to save or load your API key. To fix this, open Sheets in an incognito window with only one account, or sign out of extra accounts so the account you want is the default. Learn more.
Use Exa inside Google Sheets to research the web, generate tables, and fill missing data. The add-on gives you two ways to work:
  • Exa Agent for full tables and multi-cell tasks
  • =EXA(...) for one answer in one cell

Install

1

Install the add-on

Go to the Exa AI add-on in the Google Workspace Marketplace and click Install.
2

Open a Google Sheet

Open a new or existing spreadsheet.
3

Open the sidebar

Go to Extensions → Exa AI → Open Sidebar.
4

Add your API key

Get your API key from dashboard.exa.ai and paste it in the sidebar.
5

Start using Exa

Open Exa Agent and start using Exa in your sheet.

Exa Agent

Exa Agent is the easiest way to use Exa in Google Sheets. Use it when you want to:
  • generate a full table from one prompt
  • fill missing cells in an existing table
  • continue a table by adding new rows
  • enrich a list with web data

Generate a table

Use Generate table when you want Exa to create a new table.
  1. Open the sidebar.
  2. Go to Exa Agent.
  3. Choose Generate table.
  4. Write what you want.
  5. Click Generate table.
Example prompt:
Find top 40 AI companies and return company name, website URL, CEO, founding date, headquarters, and a short description.
Exa researches the web and writes the table into your sheet. By default, the table starts at the selected cell. You can choose another start cell in More options.

Fill cells

Use Fill cells when you already have a table and want Exa to fill missing data.
  1. Select the blank cells in your sheet.
  2. Open Exa Agent.
  3. Choose Fill cells.
  4. Click Fill selected cells.
Exa looks at the table around your selection and fills the blanks. For best results, select blank cells in a table that already has clear headers. Example:
CompanyWebsiteCEOHeadquarters
Applehttps://apple.com
Googlehttps://google.comSundar PichaiMountain View
Select the blank cells for Apple, then click Fill selected cells. Exa uses the company name and the nearby rows as context.

Continue rows

You can also select blank rows under a table. If your table ends at rank 55 and you select the next two blank rows, Exa can continue the table with rank 56 and rank 57. Exa uses the existing rows as examples, keeps the same columns, and avoids repeating items already in the table.

=EXA(...)

Use =EXA(...) when you want one answer in one cell. It searches the web, reads the top results, and returns a concise answer.
=EXA("what you want", cell)
ParameterRequiredDescription
promptYesWhat information you want (e.g., "Return only the CEO name").
contextNoCell reference or text to enrich (e.g., a company name in A2).
Examples:
=EXA("Return only the company website URL", A2)
=EXA("Return only the CEO name", A2)
=EXA("Return only the headquarters", A2)
=EXA("Return the Amazon rating of this product", A2)
The second argument is the context. You can drag the formula down a column to run it for many rows. Use =EXA(...) for simple one-cell answers. Use Exa Agent when you want to create or fill a whole table.

=EXA_ANSWER(...)

Advanced AI answers with full control over output format. Use this when you need system prompts, structured JSON output, citations, or a specific search type.
=EXA_ANSWER(prompt, [prefix], [suffix], [includeCitations], [systemPrompt], [outputSchema], [returnRawJson], [type])
ParameterRequiredDefaultDescription
promptYesThe main question or prompt.
prefixNo""Text added before the prompt.
suffixNo""Text added after the prompt.
includeCitationsNoFALSEIf TRUE, appends numbered source citations.
systemPromptNo""System instructions to control output format (e.g., "only return a number").
outputSchemaNo""JSON schema for structured output. Generate schemas here.
returnRawJsonNoFALSEIf TRUE and outputSchema is set, returns the full JSON instead of extracting the value.
typeNo"deep"Search type: "auto", "neural", "fast", or "deep".
Examples:
=EXA_ANSWER("OpenAI CEO", "", "", FALSE, "only return a name")
=EXA_ANSWER("Modal AI headcount", "", "", FALSE, "only return a number")
=EXA_ANSWER("ceo of exa.ai", "", "", FALSE, "", "{""type"":""object"",""properties"":{""name"":{""type"":""string""}}}")
Searches the web and returns a vertical list of URLs. Supports domain filtering, category filtering, content highlights, and synthesized output via outputSchema.
=EXA_SEARCH(query, [numResults], [searchType], [prefix], [suffix], [includeDomainsStr], [excludeDomainsStr], [category], [highlightsMaxChars], [outputSchemaJson])
ParameterRequiredDefaultDescription
queryYesThe search query.
numResultsNo1Number of results (1–10).
searchTypeNo"auto""auto", "neural", or "keyword".
prefixNo""Text added before the query.
suffixNo""Text added after the query.
includeDomainsStrNo""Comma-separated domains to include (e.g., "linkedin.com,crunchbase.com").
excludeDomainsStrNo""Comma-separated domains to exclude.
categoryNo""Filter by type: "company", "research paper", "news", "github", "personal site", "pdf", "financial report", "people".
highlightsMaxCharsNo0If > 0, requests content highlights with this character limit per result.
outputSchemaJsonNo""JSON string for outputSchema (e.g., "{""type"":""text"",""description"":""summarize""}"). When set, returns synthesized output text instead of URLs.
Examples:
=EXA_SEARCH("AI startups", 5, "auto", "", "", "linkedin.com,crunchbase.com")
=EXA_SEARCH("transformer architecture", 5, "auto", "", "", "", "", "research paper")

=EXA_CONTENTS(...)

Extracts the text content from a URL.
=EXA_CONTENTS(url)
ParameterRequiredDescription
urlYesThe full URL (must start with http or https).

=EXA_FINDSIMILAR(...)

Finds URLs similar to a reference URL, with optional domain and text filters.
=EXA_FINDSIMILAR(url, [numResults], [includeDomainsStr], [excludeDomainsStr], [includeTextStr], [excludeTextStr])
ParameterRequiredDefaultDescription
urlYesThe reference URL.
numResultsNo1Number of results (1–10).
includeDomainsStrNo""Comma-separated domains to include.
excludeDomainsStrNo""Comma-separated domains to exclude.
includeTextStrNo""Phrase that must appear in results.
excludeTextStrNo""Phrase that must not appear in results.

Batch

Use Batch when you want to work with many Exa formula cells at once. Batch can:
  • refresh selected cells with Exa formulas
  • convert selected Exa formulas into normal values
Convert formulas to values when you want to keep the current results and stop the formulas from running again.

When to use what

TaskUse
Create a full table from a promptExa Agent → Generate table
Fill blank cells in a tableExa Agent → Fill cells
Continue a table with new rowsExa Agent → Fill cells
Get one value in one cell=EXA(...)
Get an answer with system prompt or structured output=EXA_ANSWER(...)
Search and get a list of URLs=EXA_SEARCH(...)
Extract text from a URL=EXA_CONTENTS(...)
Find pages similar to a URL=EXA_FINDSIMILAR(...)
Refresh many Exa formulasBatch
Save formula results as plain textBatch → Convert to values

Notes

  • Exa API requests count against your usage quota. Use Batch → Convert to values to freeze results and stop formulas from recalculating.
  • The add-on automatically retries up to 3 times with exponential backoff when rate limited (HTTP 429).
  • Start with small batches (10–20 rows) before scaling to hundreds.
Last modified on June 25, 2026