NotebookLM API - Export Notebooks, Sources & Citations
Under maintenancePricing
Pay per usage
NotebookLM API - Export Notebooks, Sources & Citations
Under maintenanceExport your NotebookLM notebooks programmatically. Get conversations, source metadata with URLs, and citation mappings. Output to JSON, CSV, Markdown or Excel. Bulk export or select specific notebooks. Perfect for n8n workflows, RAG pipelines, or backups. Unlimited exports.
Pricing
Pay per usage
Rating
0.0
(0)
Developer
ClearPath
Maintained by CommunityActor stats
0
Bookmarked
88
Total users
0
Monthly active users
2 days ago
Last modified
Categories
Share
NotebookLM API | Export Conversations, Sources & Citations
Google doesn't let you export your NotebookLM data. This Actor fixes that - get your conversations, sources, and citations out as JSON, markdown (LLM ready) or CSV.
Copy to your AI assistant
Copy this block into ChatGPT, Claude, Cursor, or any LLM to start using this actor.
clearpath/notebooklm-api on Apify. Call: ApifyClient("TOKEN").actor("clearpath/notebooklm-api").call(run_input={"email": "...", "signInToken": "..."}), then client.dataset(run["defaultDatasetId"]).list_items().items for results. Key inputs: email (Google account), signInToken (one-time sign-in token, see README "Connecting your Google account"; only needed on the first run, later runs reuse the saved sign-in). Full actor spec (input schema with all params/enums/defaults, output dataset fields, README): GET https://api.apify.com/v2/acts/clearpath~notebooklm-api/builds/default (Bearer TOKEN) → inputSchema, actorDefinition.storages.dataset, readme. Pricing: free during beta. Get token: https://console.apify.com/account/integrations
Changelog
| Date | Change |
|---|---|
| 2026-08-14 | More of every notebook - Exports now cover every notebook on the account, not only recently opened ones. Adds mind maps, data tables and notes, notebook created/modified dates, and source details (length, added date, web page vs. pasted text). Any artifact kind NotebookLM adds in future arrives in otherArtifacts instead of being dropped. |
| 2026-08-14 | New sign-in - Google retired app password sign-in, so the Actor now connects with a one-time Sign-in Token instead. Setup takes about two minutes and only has to be done once, later runs reuse it. See Connecting your Google account. The appPassword input still exists so saved configurations keep working, but it no longer signs you in. |
| 2025-12-28 | Artifact Support - Extract all AI-generated artifacts: Audio Overviews (podcasts), Video Overviews, Slide Decks (PDF + images), Infographics, Flash Cards, Quizzes, and Briefing Documents. Enable download options to store media files in Key-Value store with direct download URLs. |
- Full conversation history with Q&A threads
- Source metadata (titles, URLs)
- Citation mapping - see exactly which sources informed each AI response
- Bulk export or pick specific notebooks
🎉 Free during beta! No limits, no paid Apify account required. This won't last forever, so try it out while you can.
Built this after seeing people complain on Reddit about the lack of exports. If you need a feature that's not here yet, just ask - I'm actively building this out.
Quick Start
Basic - Export Recent Notebooks
{"email": "your-email@gmail.com","signInToken": "oauth2_4/..."}
Exports up to 10 most recent notebooks (default limit).
Export All Notebooks
{"email": "your-email@gmail.com","signInToken": "oauth2_4/...","limit": 0}
Set limit: 0 to export all notebooks without restriction.
Export Specific Notebooks
{"email": "your-email@gmail.com","signInToken": "oauth2_4/...","projectIds": ["6509c6d4-58fc-4066-8aa9-b691423e5ca7","a1b2c3d4-e5f6-7890-abcd-ef1234567890"]}
With Source Summaries & Tags
{"email": "your-email@gmail.com","signInToken": "oauth2_4/...","includeSourceSummaries": true}
Note: Enabling
includeSourceSummariesadds ~3 seconds per source to avoid rate limiting. For notebooks with many sources, runs will take longer.
Input Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
email | String | Yes | Your Google account email address |
signInToken | String | First run only | One-time token that connects your Google account. See Connecting your Google account. |
appPassword | String | No | Deprecated. Google retired this sign-in method, it no longer works. |
projectIds | Array | No | UUIDs of specific notebooks to export. If empty, exports all up to limit. |
limit | Integer | No | Max notebooks to export. Default: 10. Set to 0 for unlimited. |
includeSourceSummaries | Boolean | No | Fetch AI-generated summary and tags for each source. Default: false. Adds ~3s per source. |
includeFlashCardContent | Boolean | No | Fetch full flash card Q&A content. Default: true. |
downloadAudioOverviews | Boolean | No | Download audio podcasts to Key-Value store. Default: false. |
downloadVideoOverviews | Boolean | No | Download video summaries to Key-Value store. Default: false. |
downloadSlideDecks | Boolean | No | Download slide deck PDFs and images to Key-Value store. Default: false. |
downloadInfographics | Boolean | No | Download infographic images to Key-Value store. Default: false. |
proxyConfiguration | Object | No | Proxy settings. Default: US residential proxy. |
Proxy tip: If you're outside the US, change the proxy country to match your Google account location.
How to Get Project IDs
Run the Actor once to see all your notebooks. Each output item includes a projectId you can use for selective exports later.
Connecting your Google account
This Actor needs a one-time sign-in token from your Google account. You paste it once, it's saved in your own Apify account, and later runs need nothing.
Takes about two minutes. No password is ever typed into this Actor.
Use a Google account you're comfortable dedicating to this. The token gives access to that account for as long as it's valid, so a separate account holding just the notebooks you want to export is the safer setup.
Before you start: open this Actor's input page in a second browser tab. Step 4 is time-sensitive.
Step 1: Install a cookie viewer (one time, ~2 minutes)
Install Cookie-Editor (free, open source, available for Chrome, Edge, Firefox and Safari).
The sign-in token lives in a protected browser cookie that web pages aren't allowed to read. A cookie viewer can show it to you. Nothing is sent anywhere, it just displays what your own browser already stores.
Step 2: Sign in to Google
Go to accounts.google.com/EmbeddedSetup, sign in with the Google account whose notebooks you want, and click I agree.
The page then keeps loading and never finishes. You'll see a loading bar at the top that just keeps going. That is expected and it does not mean anything failed. You are already signed in. Leave the tab open and carry on with step 3.
Step 3: Copy the token
Click the Cookie-Editor icon in your browser toolbar, find the entry named oauth_token, and copy its value. It begins with oauth2_4/.
Step 4: Paste it and press Start
Paste the value into Sign-in Token and start the run within a few minutes. This token is short-lived on purpose. If you take too long, the run will tell you the token expired, and you just repeat steps 2 and 3.
{"email": "your-email@gmail.com","signInToken": "oauth2_4/..."}
Done. Later runs reuse the saved sign-in, so this is a one-time setup.
Your account and your data
- Stored in your account, not mine – The saved sign-in lives in your own Apify Key-Value store. Notebook content streams straight to your dataset. I don't store either.
- Revocable – Remove access anytime at myaccount.google.com/permissions, or by changing your Google password.
- Encrypted – The token is a secret input on Apify, never exposed in logs or metadata.
- You can remove the cookie viewer extension once you're set up, it's only needed for this step.
App passwords no longer work. Google retired that sign-in method, so the
appPasswordinput can't connect an account anymore. It stays in the schema so saved configurations keep validating. Use the sign-in token above instead.
Output
Each notebook is exported as a separate dataset item. All text content is formatted as markdown with bold highlights, bullet points, and structure - ready to feed directly into LLMs, RAG pipelines, or content workflows.
Output Fields
| Field | Type | Description |
|---|---|---|
projectId | String | Unique notebook UUID |
projectTitle | String | Notebook name |
projectEmoji | String | Notebook icon emoji |
createdAt | Number | When the notebook was created (Unix timestamp) |
modifiedAt | Number | When the notebook last changed (Unix timestamp) |
notebookSummary | String | AI-generated overview of the notebook contents |
suggestedQuestions | Array | Suggested questions to explore the notebook |
audioOverviews | Array | AI-generated podcasts/audio discussions |
videoOverviews | Array | AI-generated video summaries |
slideDecks | Array | AI-generated presentation slides (PDF + images) |
infographics | Array | AI-generated infographic images |
flashCards | Array | AI-generated flash card decks for studying |
quizzes | Array | AI-generated multiple-choice quizzes |
briefingDocs | Array | AI-generated reports (briefing documents) with key insights |
mindMaps | Array | AI-generated mind maps, as a nested tree of topics |
dataTables | Array | AI-generated comparison tables |
notes | Array | Notes saved in the notebook |
otherArtifacts | Array | Anything else the notebook holds, see below |
sources | Array | List of source documents |
conversations | Array | All chat sessions with turns |
Source Fields
| Field | Type | Description |
|---|---|---|
id | String | Source UUID |
title | String | Source title |
url | String | Original source URL (web sources) |
kind | String | web_page or text |
wordCount | Number | Length of the source |
tokenCount | Number | Length of the source as the model counts it |
addedAt | Number | When the source was added (Unix timestamp) |
revisionId | String | Identifier of the current revision |
revisedAt | Number | When that revision was made (Unix timestamp) |
status | Number | Processing state, 2 once the source is ready |
summary | String | AI-generated source summary (only with includeSourceSummaries: true) |
tags | Array | Auto-generated topic tags (only with includeSourceSummaries: true) |
Audio Overview Fields
| Field | Type | Description |
|---|---|---|
id | String | Audio artifact UUID |
title | String | Podcast title |
audioUrl | String | Original audio URL (Google CDN) |
audioStreamUrl | String | Streaming audio URL |
downloadUrl | String | Direct download URL (only with downloadAudioOverviews: true) |
duration | Integer | Duration in seconds |
mimeType | String | Audio format (e.g., audio/mp4) |
createdAt | Integer | Unix timestamp of creation |
Video Overview Fields
| Field | Type | Description |
|---|---|---|
id | String | Video artifact UUID |
title | String | Video title |
videoUrl | String | Original video URL (Google CDN) |
videoStreamUrl | String | Streaming video URL |
downloadUrl | String | Direct download URL (only with downloadVideoOverviews: true) |
duration | Integer | Duration in seconds |
mimeType | String | Video format (e.g., video/mp4) |
createdAt | Integer | Unix timestamp of creation |
Slide Deck Fields
| Field | Type | Description |
|---|---|---|
id | String | Slide deck UUID |
title | String | Presentation title |
pdfUrl | String | Original PDF URL |
pdfDownloadUrl | String | Direct PDF download URL (only with downloadSlideDecks: true) |
slideCount | Integer | Number of slides |
slides | Array | Individual slide objects with imageUrl, downloadUrl, width, height, description, content |
mimeType | String | application/pdf |
createdAt | Integer | Unix timestamp of creation |
Infographic Fields
| Field | Type | Description |
|---|---|---|
id | String | Infographic UUID |
title | String | Infographic title |
imageUrl | String | Original image URL (Google CDN) |
downloadUrl | String | Direct download URL (only with downloadInfographics: true) |
width | Integer | Image width in pixels |
height | Integer | Image height in pixels |
description | String | Visual description |
fullText | String | Extracted text content from the infographic |
mimeType | String | image/png |
createdAt | Integer | Unix timestamp of creation |
Flash Card Fields
| Field | Type | Description |
|---|---|---|
id | String | Flash card deck UUID |
title | String | Deck title |
cardCount | Integer | Number of cards in the deck |
cards | Array | Card objects with front and back text (only with includeFlashCardContent: true) |
createdAt | Integer | Unix timestamp of creation |
Quiz Fields
| Field | Type | Description |
|---|---|---|
id | String | Quiz UUID |
title | String | Quiz title |
questionCount | Integer | Number of questions |
questions | Array | Question objects (only with includeFlashCardContent: true) |
questions[].question | String | The question text |
questions[].options | Array | Answer options with text and rationale |
questions[].correctIndex | Integer | Index of the correct answer (0-based) |
questions[].hint | String | Optional hint for the question |
createdAt | Integer | Unix timestamp of creation |
Report (Briefing Document) Fields
NotebookLM now calls these Reports. The output field stays briefingDocs so
existing integrations keep working.
| Field | Type | Description |
|---|---|---|
id | String | Report UUID |
title | String | Document title |
content | String | Full document content in markdown format |
description | String | Brief description (e.g., "Key insights and important quotes") |
mimeType | String | Content type (text/markdown) |
createdAt | Integer | Unix timestamp of creation |
Mind Map Fields
| Field | Type | Description |
|---|---|---|
id | String | Mind map UUID |
title | String | Mind map title |
mindMap | Object | Nested tree, each node has a name and optional children |
language | String | Language the mind map was generated in |
createdAt | Integer | Unix timestamp of creation |
Data Table Fields
| Field | Type | Description |
|---|---|---|
id | String | Table UUID |
title | String | Table title |
columns | Array | Header row |
rows | Array | One array of cell values per data row |
rowCount | Integer | Number of data rows |
notes | Array | Footnotes printed under the table, usually the source legend |
prompt | String | What the table was asked to compare |
language | String | Language the table was generated in |
createdAt | Integer | Unix timestamp of creation |
Note Fields
| Field | Type | Description |
|---|---|---|
id | String | Note UUID |
title | String | Note title |
content | String | Note text |
createdAt | Integer | Unix timestamp of creation |
modifiedAt | Integer | Unix timestamp of the last change |
Other Artifacts
NotebookLM keeps adding new kinds of generated content. Anything this Actor does
not have a dedicated field for still lands in otherArtifacts rather than being
dropped, so a new kind never silently disappears from your export.
| Field | Type | Description |
|---|---|---|
id | String | Artifact UUID |
title | String | Artifact title |
type | String | Kind of artifact, e.g. guided_view |
typeCode | Integer | Numeric kind, useful when the name is not yet known |
status | Integer | Generation state, 3 once finished |
sourceIds | Array | Sources the artifact was generated from |
prompt | String | What it was asked to produce, when available |
language | String | Language it was generated in, when available |
createdAt | Integer | Unix timestamp of creation |
Output Example
{"projectId": "6509c6d4-58fc-4066-8aa9-b691423e5ca7","projectTitle": "Market Research Q1 2025","projectEmoji": "📊","notebookSummary": "These sources chronicle the rapid growth of **renewable energy markets** in 2025. The texts highlight a shift toward **distributed solar** and **battery storage**, with key players including Tesla, Enphase, and emerging Chinese manufacturers. Collectively, the documents provide a comprehensive look at **market sizing**, competitive dynamics, and regulatory tailwinds driving adoption.","suggestedQuestions": [{"question": "What are the key market trends for 2025?","promptTemplate": "Create a detailed briefing document..."}],"audioOverviews": [{"id": "75e3e2e8-1477-4a0b-960f-1a5cac8fb449","title": "Renewable Energy Market Deep Dive","audioUrl": "https://lh3.googleusercontent.com/notebooklm/AG60hO...=m140-dv","audioStreamUrl": "https://lh3.googleusercontent.com/notebooklm/AG60hO...=m140","downloadUrl": "https://api.apify.com/v2/key-value-stores/abc123/records/audio_6509c6d4_75e3e2e8.m4a","duration": 635,"mimeType": "audio/mp4","createdAt": 1765728326}],"videoOverviews": [{"id": "0cd398ee-1c74-42e3-a057-6a5a93d18c7b","title": "Energy Markets Explained","videoUrl": "https://lh3.googleusercontent.com/notebooklm/AG60hO...=m22-dv","videoStreamUrl": "https://lh3.googleusercontent.com/notebooklm/AG60hO...=m22","downloadUrl": "https://api.apify.com/v2/key-value-stores/abc123/records/video_6509c6d4_0cd398ee.mp4","duration": 380,"mimeType": "video/mp4","createdAt": 1765728351}],"slideDecks": [{"id": "45511ac2-db9a-4c78-92fe-6741163f7812","title": "Renewable Energy Presentation","pdfUrl": "https://contribution.usercontent.google.com/download?...","pdfDownloadUrl": "https://api.apify.com/v2/key-value-stores/abc123/records/slides_6509c6d4_45511ac2.pdf","mimeType": "application/pdf","slideCount": 15,"slides": [{"imageUrl": "https://lh3.googleusercontent.com/notebooklm/...","downloadUrl": "https://api.apify.com/v2/key-value-stores/abc123/records/slide_6509c6d4_45511ac2_00.png","width": 1376,"height": 768,"description": "Title slide introducing renewable energy markets","content": "Renewable Energy Markets Q1 2025"}],"createdAt": 1765728194}],"infographics": [{"id": "0b90291c-b749-4a8c-bd8f-26c96a46b2ba","title": "Solar Market Growth Infographic","imageUrl": "https://lh3.googleusercontent.com/notebooklm/AG60hO...=w2752-d-h1536","downloadUrl": "https://api.apify.com/v2/key-value-stores/abc123/records/infographic_6509c6d4_0b90291c.png","width": 2752,"height": 1536,"description": "Visual summary of solar market trends","fullText": "Global Solar Installations 2025: 580 GW projected...","mimeType": "image/png","createdAt": 1765727700}],"flashCards": [{"id": "3ed2e7bc-7b32-40f8-a65a-9720cfcbfacc","title": "Energy Markets Study Cards","cardCount": 50,"cards": [{"front": "What is the projected global solar installation capacity for 2025?","back": "580 GW, representing a 25% increase from 2024"},{"front": "What was Tesla's energy storage deployment growth YoY?","back": "180% year-over-year, reaching 12.4 GWh"}],"createdAt": 1765729277}],"quizzes": [{"id": "6de7348c-7dc7-4832-b4aa-d2b0c7fde839","title": "Renewable Energy Quiz","questionCount": 8,"questions": [{"question": "What is the projected global solar installation capacity for 2025?","options": [{"text": "400 GW", "rationale": "This figure is below the projected growth trajectory"},{"text": "580 GW", "rationale": "Correct - BloombergNEF projects 580 GW for 2025"},{"text": "750 GW", "rationale": "This exceeds current manufacturing capacity"},{"text": "1000 GW", "rationale": "This target is projected for 2030, not 2025"}],"correctIndex": 1,"hint": "Consider the BloombergNEF projections mentioned in the sources"}],"createdAt": 1765729500}],"briefingDocs": [{"id": "0ca5dcd6-18ed-45f5-bd79-a1de96228106","title": "Briefing Document: Renewable Energy Markets","content": "# Briefing Document: Renewable Energy Markets\n\n## Summary\n\nThe global renewable energy market is experiencing unprecedented growth in 2025...\n\n## Key Findings\n\n- **Solar dominance:** Global installations projected to reach 580 GW\n- **Storage surge:** Battery deployments up 180% YoY\n- **Grid challenges:** Interconnection delays remain the primary barrier","description": "Key insights and important quotes","mimeType": "text/markdown","createdAt": 1765728400}],"mindMaps": [{"id": "a94b29a8-224f-4fd9-b9ec-556149acc6b3","title": "Renewable Energy Markets","mindMap": {"name": "Renewable Energy Markets","children": [{"name": "Solar", "children": [{"name": "580 GW projected for 2025"}]},{"name": "Storage", "children": [{"name": "Battery deployments up 180% YoY"}]}]},"language": "en","createdAt": 1765729800}],"dataTables": [{"id": "c7d7f3b3-359b-4481-b266-b80e721e47f2","title": "Technology Comparison Across Sources","columns": ["Technology", "2025 Outlook", "Main Barrier", "Source"],"rows": [["Solar", "580 GW of new installations", "Grid interconnection delays", "[1], [2]"],["Battery storage", "Deployments up 180% YoY", "Polysilicon supply", "[1]"]],"rowCount": 2,"notes": ["[1] BloombergNEF Solar Market Outlook 2025", "[2] IEA Renewables 2025"],"prompt": "Compare what each source says about growth and barriers","language": "en","createdAt": 1765729900}],"notes": [{"id": "5fc336d7-c12f-4731-83dd-b202c57c87d6","title": "Follow-up questions","content": "Check the interconnection queue figures against the IEA report.","createdAt": 1765730000,"modifiedAt": 1765730120}],"sources": [{"id": "cb16c741-0698-4590-b2a0-94f5e1f3afd5","title": "BloombergNEF Solar Market Outlook 2025","url": "https://about.bnef.com/solar-market-outlook/","kind": "web_page","wordCount": 2933,"tokenCount": 4408,"addedAt": 1765724797,"revisionId": "24feaf0e-0929-45cd-a465-f78cf5595326","revisedAt": 1765724796,"status": 2,"summary": "This report projects **global solar installations** to reach 580 GW in 2025, driven by falling module prices and supportive policies in the US and EU. Key barriers include **grid interconnection delays** and polysilicon supply constraints.","tags": ["Solar energy", "Market forecast", "Clean energy policy"]},{"id": "15969df9-c08e-4bcb-af2b-363a983b294b","title": "Tesla Q3 2025 Earnings Call Transcript","url": "https://ir.tesla.com/q3-2025-transcript","summary": "Tesla's energy storage division reported **record deployments** of 12.4 GWh, up 180% YoY. Management highlighted **Megapack demand** outpacing production capacity through 2026.","tags": ["Battery storage", "Tesla", "Energy earnings"]}],"conversations": [{"sessionId": "079ffb57-e2f9-4e7a-bf5b-ed81d6a0aaab","turns": [{"turnId": "bfd3f131-b306-4fa6-b90c-8aa91be0210e","timestamp": 1765731768,"role": "user","content": "What are the key market trends for 2025?","citations": null},{"turnId": "c984b3b4-4ee3-4e76-a5b3-9d737c607a1d","timestamp": 1765731770,"role": "assistant","content": "Based on the sources, the key trends shaping the **renewable energy market** in 2025 include:\n\n* **Solar dominance:** Global installations projected to hit 580 GW, with falling module prices driving adoption [1].\n* **Storage surge:** Tesla's Megapack deployments up **180% YoY**, with demand outpacing supply through 2026 [2].\n* **Grid bottlenecks:** Interconnection delays remain the primary barrier to faster deployment [1].\n\nThe overall trajectory suggests **accelerating electrification** despite supply chain challenges.","citations": [{"sourceId": "cb16c741-0698-4590-b2a0-94f5e1f3afd5","startPos": 95,"endPos": 180,"citedText": "Global installations projected to hit 580 GW","sourceExcerpt": "BloombergNEF projects global solar PV installations to reach 580 GW in 2025, representing a 25% increase from 2024..."},{"sourceId": "15969df9-c08e-4bcb-af2b-363a983b294b","startPos": 220,"endPos": 295,"citedText": "Tesla's Megapack deployments up **180% YoY**","sourceExcerpt": "Our energy storage deployments reached 12.4 GWh this quarter, up 180% year-over-year, with Megapack demand continuing to exceed production capacity..."}]}]}]}
Note:
summaryandtagsfields on sources only appear whenincludeSourceSummaries: trueis set in the input.
Artifacts: All AI-generated artifacts are automatically extracted. Enable download options to store media files in the Key-Value store with direct
downloadUrlfields:
downloadAudioOverviews- Audio podcasts (.m4a)downloadVideoOverviews- Video summaries (.mp4)downloadSlideDecks- PDFs and slide images (.png)downloadInfographics- Infographic images (.png)includeFlashCardContent- Full flash card Q&A content
Markdown output: All AI-generated content (
notebookSummary,content,summary, briefing docs) uses markdown formatting with bold highlights, bullet points, and numbered references. This structured text is ready to pipe into LLMs, vector databases, or content workflows without preprocessing.
Citation Structure
Each AI response includes citation data showing exactly which sources informed the answer:
| Field | Type | Description |
|---|---|---|
sourceId | String | UUID of the cited source |
startPos | Number | Character position where citation starts in response |
endPos | Number | Character position where citation ends |
citedText | String | The exact text that was cited |
sourceExcerpt | String | Relevant excerpt from the original source |
Key Features
Complete Data Extraction
- Notebook metadata - Title, emoji, and unique project ID
- Source library - All sources with titles and original URLs
- Full conversations - Every Q&A exchange in your notebooks
- Citation data - Which sources informed each AI response, with exact text excerpts
Flexible Export Options
- Export all notebooks - One-click backup of your entire NotebookLM library
- Selective export - Choose specific notebooks by project ID
- Multiple formats - JSON for programmatic use, CSV for spreadsheets
Use Cases
- Backup your research - Export before you lose access (graduating, switching jobs, etc.)
- Feed RAG pipelines - Use conversation history and citations as retrieval context
- Automate with n8n - Weekly digests, Notion sync, Slack alerts when topics appear
- Repurpose content - Turn NotebookLM conversations into blog posts with proper citations
- Fine-tune models - Export Q&A pairs for training data
- Audit AI responses - Review which sources informed each answer at scale
API Integration
Python
from apify_client import ApifyClientclient = ApifyClient("your_api_token")run = client.actor("clearpath/notebooklm-api").call(run_input={"email": "your-email@gmail.com","signInToken": "oauth2_4/..."})# Process exported notebooksfor notebook in client.dataset(run["defaultDatasetId"]).iterate_items():print(f"📓 {notebook['projectEmoji']} {notebook['projectTitle']}")print(f" Sources: {len(notebook['sources'])}")print(f" Conversations: {len(notebook['conversations'])}")
JavaScript
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'your_api_token' });const run = await client.actor('clearpath/notebooklm-api').call({email: 'your-email@gmail.com',signInToken: 'oauth2_4/...'});const { items } = await client.dataset(run.defaultDatasetId).listItems();for (const notebook of items) {console.log(`📓 ${notebook.projectEmoji} ${notebook.projectTitle}`);console.log(` Sources: ${notebook.sources.length}`);console.log(` Conversations: ${notebook.conversations.length}`);}
n8n Integration Example
Combine NotebookLM Export with n8n to build powerful automated workflows:
Use Case: Weekly Research Digest
Create an automated pipeline that exports your NotebookLM research, processes it with an LLM, and sends a weekly summary email.
Workflow:
- Schedule Trigger - Run every Monday at 9 AM
- Apify Actor Node - Export all notebooks
- Code Node - Extract key insights from conversations
- OpenAI Node - Summarize findings into a digest
- Gmail Node - Send the digest to your team
Apify Actor Node Configuration:
{"actorId": "clearpath/notebooklm-api","input": {"email": "{{ $credentials.googleEmail }}","signInToken": "{{ $credentials.googleSignInToken }}"}}
Code Node - Extract Insights:
const notebooks = $input.all();const insights = [];for (const notebook of notebooks) {for (const conv of notebook.json.conversations) {for (const turn of conv.turns) {if (turn.role === 'assistant' && turn.citations?.length > 0) {insights.push({notebook: notebook.json.projectTitle,insight: turn.content.substring(0, 500),sourceCount: turn.citations.length});}}}}return insights.slice(0, 10); // Top 10 insights
OpenAI Node Prompt:
You are a research analyst. Summarize these key insights from our NotebookLM research into a concise weekly digest:{{ $json.insights }}Format as a professional email with:- Executive summary (2-3 sentences)- Key findings (bullet points)- Sources referenced- Recommended actions
Other n8n Use Cases
- Backup to Google Drive - Export → Format → Upload to Drive
- Slack Notifications - Alert when new insights are captured
- Notion Database - Sync notebooks to a Notion knowledge base
- RAG Pipeline - Feed exports into a vector database for semantic search
- Content Calendar - Extract topics → Schedule blog posts
Data Export Formats
Export your data in multiple formats from the Apify Console:
- JSON - Full structured data with nested objects
- CSV - Flattened for spreadsheet analysis
- Excel - Direct import to Microsoft Excel
- XML - For legacy system integration
FAQ
Is this official? Nope, just a side project. It uses your credentials to access your own notebooks - same as you would in a browser.
Is my data secure? Your sign-in token is encrypted and only used to authenticate. It's saved in your own Apify account, not mine. I don't store your notebook content - it streams straight to your dataset.
What's a sign-in token? A value your browser already holds after you sign in to Google. You copy it once so the Actor can reach your notebooks. You never type your password into this Actor, and you can revoke access anytime at myaccount.google.com/permissions. Setup steps: Connecting your Google account.
The Google page after sign-in never stops loading. Did it fail? No. That page is expected to keep showing a loading bar forever. You're already signed in, just carry on and copy the token.
Do I need to do this before every run? No, only the first time. Later runs reuse the saved sign-in. You'll only redo it if you change your Google password or revoke access.
My app password stopped working. Google retired app password sign-in, so it can't connect an account anymore. Switch to the sign-in token above.
Can I export specific notebooks?
Yes - pass the projectIds array. Run once without it to see all your notebook IDs.
Lots of notebooks? Handles large libraries fine. Built-in rate limiting and retries. Usually finishes in minutes.
Can I schedule exports? Yes, use Apify's scheduler for daily/weekly runs.
Roadmap
This Actor is under active development. Planned features:
- Create notebooks - Programmatically create new NotebookLM projects
- Add sources - Upload documents and URLs to notebooks via API
- Generate podcasts - Trigger Audio Overview generation
- Chat interface - Send queries to notebooks and get AI responses
Have a feature request? Open an issue or reach out!
Support
Email me at max@mapa.slmail.me or open an issue. I usually respond same-day.
Legal
This exports data from your own account using your credentials. You're responsible for complying with Google's ToS and any relevant data regulations (GDPR, etc.).

