FlashData tools and readers for LlamaIndex
Give a research agent current Google and YouTube results, or load existing video
captions into a RAG pipeline with timestamps and source links. Choose the needed
sources when building your application. The package supplies 17 native
FunctionTool objects for 15 capabilities and a reader for the 14 data sources.
Media delivery uses job tools, not a text reader.
This is an independently maintained integration. It is not an official LlamaIndex endorsement or a claim of 15 LlamaHub listings. Install the versioned package from PyPI:
python -m pip install 'llama-index-tools-flashdata==0.1.0'
Requires Python 3.11+ and llama-index-core 0.14.25–0.14.x. Get an API key from the
FlashData console and provide it through your
application's secret manager as FLASHDATA_API_KEY.
Installation is free; FlashData API requests use paid Credits. Check the current pricing and source-specific charges. LlamaIndex model, embedding and customer-storage charges are separate. These examples make no model or embedding calls.
Search evidence for a research agent
from llama_index.tools.flashdata import FlashDataTools, to_documents
tools = FlashDataTools(sources=["google_search"]).to_tool_list()
output = tools[0].call(query="RAG evaluation precision recall", num=5)
raw = output.raw_output # Complete structured API response and usage.
documents = to_documents("google_search", raw) # No second API request.
for doc in documents:
print(doc.metadata.get("url"), doc.text)
Pass tools to your application's LlamaIndex FunctionAgent with the model you
have configured. Tool schemas contain only source arguments; API key, storage
credentials, source selection and download permission belong to the application.
Treat returned web/caption text as untrusted evidence, not agent instructions.
Google results contain search snippets and metadata, not fetched web-page text.
Caption Documents for retrieval
from llama_index.tools.flashdata import FlashDataReader
reader = FlashDataReader(source="youtube_transcript")
documents = reader.load_data(video_id="jNQXAC9IVRw", language="en")
for doc in documents:
print(doc.metadata.get("url"), doc.metadata.get("start"), doc.text)
Each caption segment becomes a Document with its text, available start/end,
video URL, languageCode and isAutoGenerated. If segments are unavailable but
fullText exists, it becomes one Document without invented timestamps. Transcript
defaults to automatic captions; youtube_captions defaults to uploader captions.
Neither generates speech recognition, translates, or falls back to another track.
Search readers produce one JSON Document per result record, preserving optional
record fields. Image URLs/dimensions are metadata, not image embeddings. Places
may have no URL. The reader does not invent missing source links. Use tool
raw_output for the full response, including Google related-search lists, usage
and other provider envelope fields. to_documents() converts an existing result
without a second paid query.
await tool.acall(...) and await reader.aload_data(...) use LlamaIndex's native
thread offloading. Cancelling an await does not cancel an accepted paid job;
check FlashData Jobs before resubmitting.
All capabilities
See the task guides below for inputs, outputs, a runnable example and limitations.
| Task | Source | Guide |
|---|---|---|
| Collect web evidence for a research agent | google_search |
Google Search |
| Build a news evidence feed for an agent | google_news |
Google News |
| Prepare an image reference shortlist | google_images |
Google Images |
| Ground a product comparison with search snapshots | google_shopping |
Google Shopping |
| Find video references across websites | google_videos |
Google Videos |
| Collect local options for a planning assistant | google_places |
Google Places |
| Discover videos before building a caption collection | youtube_search |
YouTube Search |
| Create a larger video research candidate set | youtube_search_extended |
YouTube Extended Search |
| Inspect chapters before choosing retrieval material | youtube_metadata |
YouTube Metadata |
| Load timestamped automatic captions for RAG | youtube_transcript |
YouTube Transcript |
| Build a collection from uploader captions | youtube_captions |
YouTube Captions |
| Record license-label metadata during dataset review | youtube_trainability |
YouTube License Metadata |
| Snapshot a channel for research triage | youtube_channel |
YouTube Channel |
| Explore query phrasing before a video search | youtube_suggestions |
YouTube Autocomplete |
| Deliver approved media for a downstream workflow | youtube_download |
YouTube Download to Cloud Storage |
Media delivery lifecycle
Configure FLASHDATA_DOWNLOAD_STORAGE as a secret JSON destination. Supported
providers are S3, S3-compatible, GCS, Azure, OSS, COS, BOS and TOS. Use fields from
the download contract;
the packaged storage.schema.json describes the credential structure. Bucket
names belong in storage_url; optional folders belong in object_prefix.
from llama_index.tools.flashdata import FlashDataTools
# Only enable after authorizing this paid write to your own destination.
submit, status, result = FlashDataTools(
sources=["youtube_download"], allow_download=True
).to_tool_list()
receipt = submit.call(video_id="jNQXAC9IVRw", download_type="audio", output_format="m4a").raw_output
job_id = receipt["id"] # Persist before any follow-up; never resubmit to poll.
state = status.call(job_id=job_id).raw_output
# Later, read result with the same ID. Pending jobs return status, not an error.
delivery = result.call(job_id=job_id).raw_output
Download submission is disabled by default. You can use status/result tools without enabling it or supplying destination credentials. Completed result JSON expires after 24 hours; media retention depends on your storage. Supply only content you are entitled to download and use. Storage authorization is not a training license.
Failure handling
Calls are single-attempt, bounded to 120 seconds (15-second connection timeout) and 20 MiB. Failed/ambiguous POSTs are never automatically retried. A timeout can mean the paid job was accepted: check the FlashData Jobs console before another submission. Missing credits, unauthorized sources and unavailable captions are errors, not successful empty results or reasons to silently change source.
Job reads verify the ID and youtube_download source. Download status/receipt
outputs exclude storage parameters. Result JSON is fetched only from the trusted
HTTPS origin returned by FlashData authentication; the API key is not sent there.
Redirects are not followed automatically. Raw HTTP errors and credentials are
not included in FlashDataError messages.
Local verification
uv sync --frozen
uv run --frozen pytest -q
uv run --frozen python -m build
uv run --frozen twine check dist/*
uv run --frozen python scripts/verify_install.py
Tests disable network sockets and exercise real LlamaIndex tools/readers against
HTTP fixtures. They do not establish live API, model, storage-write or public
directory acceptance. Shared parameter and HTTP contracts come from the reviewed
FlashData Haystack adapter; contract-provenance.json records exact origins and
differences. No Haystack runtime dependency is needed.
Metadata
Release files for llama-index-tools-flashdata 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| llama_index_tools_flashdata-0.1.0.tar.gz | 242.9 kB | With provenance | Details for llama_index_tools_flashdata-0.1.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| llama_index_tools_flashdata-0.1.0-py3-none-any.whl | Python 3 | none | any | Details for llama_index_tools_flashdata-0.1.0-py3-none-any.whl |
Total release size: 262.2 kB
Release files / llama_index_tools_flashdata-0.1.0.tar.gz
| Download URL | llama_index_tools_flashdata-0.1.0.tar.gz |
|---|---|
| Size | 242.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
acc3d95c185f334c6ef2addad5dd221563e46e6dd9ff8ede0c4894955f0491b7
|
|
BLAKE2b-256 checksum How to use checksums |
76807329e12842a8b01c1b8596b03c9df2bc101bb3536d95cf2302ad96d19712
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 18, 2026.
Transparency logRelease files / llama_index_tools_flashdata-0.1.0-py3-none-any.whl
| Download URL | llama_index_tools_flashdata-0.1.0-py3-none-any.whl |
|---|---|
| Size | 19.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
0cb05ea9c13b4c449162f5df0446b9481765277b578d54157027a2eaeb850ade
|
|
BLAKE2b-256 checksum How to use checksums |
109aeabbd55a62e8c0cdcd2097dd4e90810911fda243b5151c52b83a7b59fd54
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 18, 2026.
Transparency logSecurity for llama-index-tools-flashdata 0.1.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for llama_index_tools_flashdata-0.1.0.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 18, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.