Skip to main content
Connectors

Algolia connector

Set up the Algolia connector in Kaivo: authentication, configuration, the 5 BigQuery tables it syncs, and answers to common questions.

Written By Lauri Raivio

Last updated 16 days ago

Kaivo is a fully managed data platform that syncs your Algolia data into a Google BigQuery warehouse and keeps it up to date automatically. There is no pipeline to build and no infrastructure to run, so you can spend your time analysing your data from Algolia instead of moving it.

What is the Algolia connector

Sync your Algolia search data into BigQuery with Kaivo to analyse what users search for and how your indices are configured.

CategoryTech
AuthenticationAPI key
SetupSelf-service

Getting started with the Algolia connector

  1. Sign up for Kaivo and create a workspace.
  2. Connect your Algolia account.
  3. Choose which tables to sync.
  4. Wait for the initial sync to finish.
  5. Query your data in BigQuery or your favourite AI or BI tool.

Authenticating Algolia

Authenticate with your API Key.

FieldDescription
API Key

Configuring the Algolia connector

When you set up the connector, you provide:

FieldDescription
Application ID

The application ID for your Algolia account, found in Settings.

Indexes Search Query

Search parameters for the indexes_query stream, in Algolia's searchSingleIndex format (e.g. query=shoes&hitsPerPage=1000).

Start Date

Any data before this date will not be fetched.

Tables and columns synced from Algolia

Kaivo syncs 5 tables from Algolia into a dedicated dataset in your BigQuery warehouse. Click any table to see its columns and types.

ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
af__plurals__nb_custom_entriesFLOAT64
ar__plurals__nb_custom_entriesFLOAT64
ar__stopwords__nb_custom_entriesFLOAT64
az__plurals__nb_custom_entriesFLOAT64
bg__plurals__nb_custom_entriesFLOAT64
bg__stopwords__nb_custom_entriesFLOAT64
bn__stopwords__nb_custom_entriesFLOAT64
ca__plurals__nb_custom_entriesFLOAT64
ca__stopwords__nb_custom_entriesFLOAT64
cs__plurals__nb_custom_entriesFLOAT64
cs__stopwords__nb_custom_entriesFLOAT64
cy__plurals__nb_custom_entriesFLOAT64
da__compounds__nb_custom_entriesFLOAT64
da__plurals__nb_custom_entriesFLOAT64
da__stopwords__nb_custom_entriesFLOAT64
de__compounds__nb_custom_entriesFLOAT64
de__plurals__nb_custom_entriesFLOAT64
de__stopwords__nb_custom_entriesFLOAT64
el__stopwords__nb_custom_entriesFLOAT64
en__plurals__nb_custom_entriesFLOAT64
en__stopwords__nb_custom_entriesFLOAT64
eo__plurals__nb_custom_entriesFLOAT64
es__plurals__nb_custom_entriesFLOAT64
es__stopwords__nb_custom_entriesFLOAT64
et__plurals__nb_custom_entriesFLOAT64
eu__plurals__nb_custom_entriesFLOAT64
eu__stopwords__nb_custom_entriesFLOAT64
fa__stopwords__nb_custom_entriesFLOAT64
fi__compounds__nb_custom_entriesFLOAT64
fi__plurals__nb_custom_entriesFLOAT64
fi__stopwords__nb_custom_entriesFLOAT64
fo__plurals__nb_custom_entriesFLOAT64
fr__plurals__nb_custom_entriesFLOAT64
fr__stopwords__nb_custom_entriesFLOAT64
ga__stopwords__nb_custom_entriesFLOAT64
gl__plurals__nb_custom_entriesFLOAT64
gl__stopwords__nb_custom_entriesFLOAT64
he__plurals__nb_custom_entriesFLOAT64
hi__plurals__nb_custom_entriesFLOAT64
hi__stopwords__nb_custom_entriesFLOAT64
hu__plurals__nb_custom_entriesFLOAT64
hu__stopwords__nb_custom_entriesFLOAT64
hy__plurals__nb_custom_entriesFLOAT64
hy__stopwords__nb_custom_entriesFLOAT64
id__plurals__nb_custom_entriesFLOAT64
id__stopwords__nb_custom_entriesFLOAT64
is__plurals__nb_custom_entriesFLOAT64
it__plurals__nb_custom_entriesFLOAT64
it__stopwords__nb_custom_entriesFLOAT64
ja__plurals__nb_custom_entriesFLOAT64
ja__stopwords__nb_custom_entriesFLOAT64
ka__plurals__nb_custom_entriesFLOAT64
kk__plurals__nb_custom_entriesFLOAT64
ko__plurals__nb_custom_entriesFLOAT64
ko__stopwords__nb_custom_entriesFLOAT64
ku__stopwords__nb_custom_entriesFLOAT64
ky__plurals__nb_custom_entriesFLOAT64
lt__plurals__nb_custom_entriesFLOAT64
lt__stopwords__nb_custom_entriesFLOAT64
lv__stopwords__nb_custom_entriesFLOAT64
mi__plurals__nb_custom_entriesFLOAT64
mn__plurals__nb_custom_entriesFLOAT64
mr__plurals__nb_custom_entriesFLOAT64
mr__stopwords__nb_custom_entriesFLOAT64
ms__plurals__nb_custom_entriesFLOAT64
mt__plurals__nb_custom_entriesFLOAT64
nb__compounds__nb_custom_entriesFLOAT64
nb__plurals__nb_custom_entriesFLOAT64
nl__compounds__nb_custom_entriesFLOAT64
nl__plurals__nb_custom_entriesFLOAT64
nl__stopwords__nb_custom_entriesFLOAT64
no__compounds__nb_custom_entriesFLOAT64
no__plurals__nb_custom_entriesFLOAT64
no__stopwords__nb_custom_entriesFLOAT64
ns__plurals__nb_custom_entriesFLOAT64
pl__plurals__nb_custom_entriesFLOAT64
pl__stopwords__nb_custom_entriesFLOAT64
ps__plurals__nb_custom_entriesFLOAT64
pt__plurals__nb_custom_entriesFLOAT64
pt__stopwords__nb_custom_entriesFLOAT64
pt_br__stopwords__nb_custom_entriesFLOAT64
qu__plurals__nb_custom_entriesFLOAT64
ro__plurals__nb_custom_entriesFLOAT64
ro__stopwords__nb_custom_entriesFLOAT64
ru__plurals__nb_custom_entriesFLOAT64
ru__stopwords__nb_custom_entriesFLOAT64
sk__plurals__nb_custom_entriesFLOAT64
sk__stopwords__nb_custom_entriesFLOAT64
sq__plurals__nb_custom_entriesFLOAT64
sv__compounds__nb_custom_entriesFLOAT64
sv__plurals__nb_custom_entriesFLOAT64
sv__stopwords__nb_custom_entriesFLOAT64
sw__plurals__nb_custom_entriesFLOAT64
ta__plurals__nb_custom_entriesFLOAT64
te__plurals__nb_custom_entriesFLOAT64
th__stopwords__nb_custom_entriesFLOAT64
tl__plurals__nb_custom_entriesFLOAT64
tn__plurals__nb_custom_entriesFLOAT64
tr__plurals__nb_custom_entriesFLOAT64
tr__stopwords__nb_custom_entriesFLOAT64
tt__plurals__nb_custom_entriesFLOAT64
uk__plurals__nb_custom_entriesFLOAT64
uk__stopwords__nb_custom_entriesFLOAT64
ur__plurals__nb_custom_entriesFLOAT64
ur__stopwords__nb_custom_entriesFLOAT64
uz__plurals__nb_custom_entriesFLOAT64
zh__plurals__nb_custom_entriesFLOAT64
zh__stopwords__nb_custom_entriesFLOAT64
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
typeSTRING
_highlight_result__name__match_levelSTRING
_highlight_result__name__valueSTRING
_highlight_result__original_language__match_levelSTRING
_highlight_result__original_language__valueSTRING
_highlight_result__original_title__match_levelSTRING
_highlight_result__original_title__valueSTRING
_highlight_result__overview__match_levelSTRING
_highlight_result__overview__valueSTRING
_highlight_result__short_description__match_levelSTRING
_highlight_result__short_description__valueSTRING
_ranking_info__filtersFLOAT64
_ranking_info__first_matched_wordFLOAT64
_ranking_info__geo_distanceFLOAT64
_ranking_info__geo_precisionFLOAT64
_ranking_info__nb_exact_wordsFLOAT64
_ranking_info__nb_typosFLOAT64
_ranking_info__proximity_distanceFLOAT64
_ranking_info__user_scoreFLOAT64
_ranking_info__wordsFLOAT64
attributionSTRING
backdrop_pathSTRING
best_selling_rankFLOAT64
idFLOAT64
nameSTRING
object_idSTRING
original_languageSTRING
original_titleSTRING
overviewSTRING
popularityFLOAT64
poster_pathSTRING
release_dateSTRING
sale_priceFLOAT64
sale_price_rangeSTRING
shippingSTRING
short_descriptionSTRING
titleSTRING
urlSTRING
vote_averageFLOAT64
vote_countFLOAT64
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.

Subtable: indexes_query___highlight_result__name__matched_words

ColumnTypeDescription
_kaivo_parent_idSTRINGForeign key referencing _kaivo_id in the parent table. Auto-generated by Kaivo.
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
valueJSON
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.

Subtable: indexes_query___highlight_result__original_language__matched_words

ColumnTypeDescription
_kaivo_parent_idSTRINGForeign key referencing _kaivo_id in the parent table. Auto-generated by Kaivo.
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
valueJSON
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.

Subtable: indexes_query___highlight_result__original_title__matched_words

ColumnTypeDescription
_kaivo_parent_idSTRINGForeign key referencing _kaivo_id in the parent table. Auto-generated by Kaivo.
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
valueJSON
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.

Subtable: indexes_query___highlight_result__overview__matched_words

ColumnTypeDescription
_kaivo_parent_idSTRINGForeign key referencing _kaivo_id in the parent table. Auto-generated by Kaivo.
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
valueJSON
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.

Subtable: indexes_query___highlight_result__short_description__matched_words

ColumnTypeDescription
_kaivo_parent_idSTRINGForeign key referencing _kaivo_id in the parent table. Auto-generated by Kaivo.
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
valueJSON
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.

Subtable: indexes_query__cast

ColumnTypeDescription
_kaivo_parent_idSTRINGForeign key referencing _kaivo_id in the parent table. Auto-generated by Kaivo.
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
characterSTRING
nameSTRING
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.

Subtable: indexes_query__categories

ColumnTypeDescription
_kaivo_parent_idSTRINGForeign key referencing _kaivo_id in the parent table. Auto-generated by Kaivo.
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
valueJSON
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.

Subtable: indexes_query__crew

ColumnTypeDescription
_kaivo_parent_idSTRINGForeign key referencing _kaivo_id in the parent table. Auto-generated by Kaivo.
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
jobSTRING
nameSTRING
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.

Subtable: indexes_query__genres

ColumnTypeDescription
_kaivo_parent_idSTRINGForeign key referencing _kaivo_id in the parent table. Auto-generated by Kaivo.
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
valueSTRING
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.

Subtable: indexes_query__keywords

ColumnTypeDescription
_kaivo_parent_idSTRINGForeign key referencing _kaivo_id in the parent table. Auto-generated by Kaivo.
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
valueSTRING
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
versionFLOAT64
exact_on_single_word_querySTRING
highlight_post_tagSTRING
highlight_pre_tagSTRING
hits_per_pageFLOAT64
max_values_per_facetFLOAT64
min_word_sizefor1_typoFLOAT64
min_word_sizefor2_typosFLOAT64
pagination_limited_toFLOAT64
query_typeSTRING
remove_words_if_no_resultsSTRING
separators_to_indexSTRING
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.

Subtable: indexes_settings__alternatives_as_exact

ColumnTypeDescription
_kaivo_parent_idSTRINGForeign key referencing _kaivo_id in the parent table. Auto-generated by Kaivo.
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
valueSTRING
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.

Subtable: indexes_settings__attributes_for_faceting

ColumnTypeDescription
_kaivo_parent_idSTRINGForeign key referencing _kaivo_id in the parent table. Auto-generated by Kaivo.
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
valueSTRING
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.

Subtable: indexes_settings__custom_ranking

ColumnTypeDescription
_kaivo_parent_idSTRINGForeign key referencing _kaivo_id in the parent table. Auto-generated by Kaivo.
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
valueSTRING
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.

Subtable: indexes_settings__ranking

ColumnTypeDescription
_kaivo_parent_idSTRINGForeign key referencing _kaivo_id in the parent table. Auto-generated by Kaivo.
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
valueSTRING
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.

Subtable: indexes_settings__searchable_attributes

ColumnTypeDescription
_kaivo_parent_idSTRINGForeign key referencing _kaivo_id in the parent table. Auto-generated by Kaivo.
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
valueSTRING
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
created_atSTRING
data_sizeFLOAT64
entriesFLOAT64
file_sizeFLOAT64
last_build_time_sFLOAT64
nameSTRING
number_of_pending_tasksFLOAT64
pending_taskBOOL
updated_atSTRING
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
answerSTRING
answer_codeSTRING
indexSTRING
ipSTRING
methodSTRING
nb_api_callsSTRING
processing_time_msSTRING
query_bodySTRING
query_headersSTRING
query_nb_hitsSTRING
query_paramsSTRING
sha1STRING
timestampSTRING
urlSTRING
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.

Subtable: logs__inner_queries

ColumnTypeDescription
_kaivo_parent_idSTRINGForeign key referencing _kaivo_id in the parent table. Auto-generated by Kaivo.
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
index_nameSTRING
user_tokenSTRING
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.

How the Algolia sync works

After the first load, Kaivo keeps your BigQuery warehouse up to date for you. Where Algolia supports it, each sync pulls only new and changed records so it stays fast; otherwise it refreshes the whole table. Every record keeps its original ID, so you won't get duplicate rows.

Frequently asked questions

How long does the initial sync take for Algolia?

It depends on how much history is in your Algolia account. Most initial syncs finish within minutes, while large accounts can take a few hours. After that, syncs only fetch new and changed records, so they're much faster.

Can I sync only some tables or columns?

Yes. You pick which tables to sync when you set up the connection and can change the selection later. Tables you don't select are never copied to your warehouse.

What happens when Algolia's schema changes?

New fields are never added automatically. You choose which fields to sync, so data you haven't selected (sensitive personal data, for example) never lands in your warehouse. When a new field appears, it becomes available for you to add. What happens to removed or renamed fields depends on a table's sync mode: full-refresh tables always match what's currently in Algolia, so dropped fields disappear, while incremental tables keep their existing columns and history, so an old field stays and newly added fields fill in over time.

How do I handle GDPR or data deletion requests?

Your data lives in your own Kaivo-managed BigQuery warehouse, so the most direct option is to delete or anonymise specific records right in BigQuery. If you delete data in Algolia instead, full-refresh tables drop it on the next sync, while incremental tables keep it, so you would remove the row in BigQuery or ask us to run a full refresh. To remove everything, delete the Algolia connector in Kaivo and all of its synced data is deleted with it.

Common use cases for Algolia data

Search analysis

Use logs to see top queries, no-result searches, and how search demand changes over time.

Index inventory

Track indices and indexes_settings to document how each index is configured.

Query monitoring

Bring indexes_query data into BigQuery to watch performance and usage patterns.

Language coverage

Use available_languages to check which locales your search supports.

Use Algolia data in your AI and BI tools

Once Algolia data lands in your Kaivo-managed BigQuery warehouse, you can explore it with AI tools or any BI tool that connects to BigQuery. Here's how the most common destinations work with Algolia data.

Claude

Use Kaivo's MCP server to give Claude secure, workspace-scoped access to your data. Setup guide →

Power BI

Microsoft's BI tool with a native BigQuery connector. Supports direct query and scheduled refresh. Setup guide →

Data Studio

Free Google BI tool with native BigQuery support. One-click connection to your Kaivo warehouse; great for SMB teams on Google Workspace. Setup guide →

Tableau

The premium analytics standard, with native BigQuery integration. Setup guide →

Google Sheets

Use Connected Sheets to query BigQuery directly from a spreadsheet, with no SQL. Setup guide →

Excel

Connect via Power Query's BigQuery connector. Setup guide →

Metabase

Open-source BI tool with strong BigQuery support. Setup guide →

See our pricing page for Algolia connector pricing and plan details.

  • Adform: Sync Adform to BigQuery.
  • Amplitude: Sync Amplitude to BigQuery.
  • Auth0: Sync Auth0 to BigQuery.
  • Convex: Sync Convex to BigQuery.
  • GitHub: Sync GitHub to BigQuery.
  • GitLab: Sync GitLab to BigQuery.

Was this helpful?

Still need help? Share an idea