Skip to main content

langchain-scrapely

LangChain and LangGraph integration for Scrape.ly: run Actors, load their results as documents for RAG, and give agents Scrape.ly tools.

pip install langchain-scrapely
export SCRAPELY_TOKEN=your-api-key

Create an API key in the Scrape.ly dashboard under Settings → API keys. Everything below reads it from SCRAPELY_TOKEN, or takes it as scrapely_token=....

Load results as documents

ScrapelyWrapper runs an Actor, waits for it to finish, and returns a loader for its results. You decide how each result becomes a Document.

from langchain_core.documents import Document
from langchain_scrapely import ScrapelyWrapper

loader = ScrapelyWrapper().call_actor(
    actor_id='username/actor-name',
    run_input={'startUrls': [{'url': 'https://example.com'}]},
    dataset_mapping_function=lambda item: Document(
        page_content=item.get('text') or '', metadata={'source': item.get('url')}
    ),
)
docs = loader.load()
  • call_actor_task(task_id, task_input, ...) runs a saved task instead. Fields in task_input override its saved input.
  • acall_actor and acall_actor_task are the async versions.
  • build, memory_mbytes and timeout_secs set the run options.
  • A run that does not succeed raises RuntimeError.

To load results that already exist, use ScrapelyDatasetLoader:

from langchain_scrapely import ScrapelyDatasetLoader

loader = ScrapelyDatasetLoader(
    dataset_id='YOUR_DATASET_ID',
    dataset_mapping_function=lambda item: Document(page_content=item.get('text') or ''),
)
docs = loader.load()  # or lazy_load(), aload(), alazy_load()

Tools for agents

Any Actor as a tool

ScrapelyActorsTool turns one Actor into a tool. Its name, description and input come from the Actor, so the agent knows what it does and how to fill in its input.

from langchain_scrapely import ScrapelyActorsTool

tool = ScrapelyActorsTool('username/actor-name')
result = tool.invoke({'run_input': {'query': 'coffee shops in Berlin'}})

General tools

Tool Name What it does
ScrapelyRunActorTool scrapely_run_actor Runs an Actor and returns the run, including its dataset_id.
ScrapelyRunActorAndGetDatasetTool scrapely_run_actor_and_get_dataset Runs an Actor and returns its results.
ScrapelyGetDatasetItemsTool scrapely_get_dataset_items Reads items from a dataset.
ScrapelyRunTaskTool scrapely_run_task Runs a saved task and returns the run.
ScrapelyRunTaskAndGetDatasetTool scrapely_run_task_and_get_dataset Runs a saved task and returns its results.

SCRAPELY_CORE_TOOLS holds all five as classes:

from langchain_scrapely import SCRAPELY_CORE_TOOLS

tools = [cls() for cls in SCRAPELY_CORE_TOOLS]

The tools that return results answer with JSON: {"run": {id, status, status_message, dataset_id, started_at, finished_at}, "items": [...]}. scrapely_run_actor and scrapely_run_task return only run, and scrapely_get_dataset_items returns "run": null. Errors, including invalid arguments, go back to the agent as text instead of stopping it.

Limits on what the agent may ask for, set when you create a tool:

Option Default What it limits
max_timeout_secs 600 Longest run the agent may start.
max_memory_mbytes 32768 Most memory per run. Requests are rounded down to a power of two; anything under 128 MB gets 128 MB.
max_items 1000 Most results returned at once.

With LangGraph

create_agent builds a LangGraph agent. It is in the langchain package, and the model below needs langchain-openai (pip install langchain langchain-openai):

from langchain.agents import create_agent
from langchain_scrapely import ScrapelyActorsTool, ScrapelyGetDatasetItemsTool

agent = create_agent(
    'openai:gpt-4o',
    tools=[ScrapelyActorsTool('username/actor-name'), ScrapelyGetDatasetItemsTool()],
)
agent.invoke({'messages': [{'role': 'user', 'content': 'Find the top coffee shops in Berlin'}]})

Give an agent only the tools it needs: fewer tools means better choices and fewer tokens.

Docs

scrape.ly/docs/langchain and scrape.ly/docs/langgraph.

License

MIT

Metadata

Release files for langchain-scrapely 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for langchain-scrapely 0.1.0
File Size Uploaded Provenance
langchain_scrapely-0.1.0.tar.gz 9.0 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for langchain-scrapely 0.1.0
File Interpreter ABI Platform
langchain_scrapely-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 21.5 kB

Release files / langchain_scrapely-0.1.0.tar.gz

Download URL langchain_scrapely-0.1.0.tar.gz
Size 9.0 kB
Tags Source
SHA-256 checksum
How to use checksums
db40806f203133effc5ae53ee5fc5fcd72b6862c391b43646f7f1c1db396602d
BLAKE2b-256 checksum
How to use checksums
3b6e831cbe2cb61500757e7ed2e6f4da3c74fe829d8960a3ec49986421aac8e3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.13.5 {"installer":{"name":"uv","version":"0.13.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / langchain_scrapely-0.1.0-py3-none-any.whl

Download URL langchain_scrapely-0.1.0-py3-none-any.whl
Size 12.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
6303ceef36d3445eef3c0c6d4c40f3ce58b47c6aef470ee2ce2e44b2f68ebad1
BLAKE2b-256 checksum
How to use checksums
b192530e3e08095811e4b97c72e25af84b7ca113e372762dc0c10ada7262fc0c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.13.5 {"installer":{"name":"uv","version":"0.13.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Security for langchain-scrapely 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.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A 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.

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page