Skip to content

Releases: crawlsnap/crawlsnap-python

v0.9.0 — SerpApi

Choose a tag to compare

@imacross imacross released this 08 Sep 16:02

Contract: crawlsnap-contracts v0.12.0

Added

  • SerpApi — new serp_api resource (sync and async) with a single method,
    search(query, *, count, page, language, country, safe, time_range, site, filetype), returning the typed SerpSearchData: ranked Google results for
    one result page plus the related searches Google suggests. Each result's
    url is the real target URL, already unwrapped from Google's redirector.
    Available as crawlsnap.serp_api on the module singleton, client.serp_api
    on an explicit client, and serp_api.v1 for version pinning.

    Refinements left unset are omitted from the request so the API's own defaults
    apply — the SDK does not pin a default the API is free to move.

v0.8.0

Choose a tag to compare

@imacross imacross released this 05 Sep 13:18

Contract: crawlsnap-contracts v0.11.0

Added

  • sport_snap.channel_repeats() (sync and async) accepts an optional cursor
    keyword that is forwarded verbatim as the cursor query parameter. The
    channel repeat schedule is served as ~20-fixture pages with
    fixtures_next / fixtures_prev cursors; without this, callers were pinned
    to the first page (roughly two days of schedule). The region is always taken
    from iso_code, never from the cursor.

Changed

  • Models regenerated from the bundled contract: the cursor fields on the
    channel repeat payload are now documented.

v0.7.0

Choose a tag to compare

@imacross imacross released this 12 Jul 06:57

Full Changelog: v0.6.0...v0.7.0

v0.6.0

Choose a tag to compare

@imacross imacross released this 07 Jul 21:07

Full Changelog: v0.5.0...v0.6.0

v0.5.0 — SportSnap resource

Choose a tag to compare

@imacross imacross released this 05 Jul 17:05

Adds the sport_snap resource (sync + async): channel, channel_schedule, match, country_channels, daily_schedule — live football (soccer) TV listings with typed models generated from the public contract. Same .v1 pinning, raw_response, and typed-error semantics as the other products.

Full Changelog: v0.4.0...v0.5.0

v0.4.0

Choose a tag to compare

@imacross imacross released this 20 Jun 23:10

Full Changelog: v0.3.0...v0.4.0

v0.3.0

Choose a tag to compare

@imacross imacross released this 18 Jun 10:53

Highlights

  • Async clientAsyncCrawlSnap, the awaitable twin of CrawlSnap with an identical surface (same constructor, resources, retries, typed errors). Methods are coroutines; subdo_snap.scan_iter is an async generator. Ideal for enriching many indicators concurrently with asyncio.gather.
  • Stable-default per-API versioning — the product version is now a value carried in the request path, not a class hierarchy. Unpinned calls target a stable default that never moves on its own: upgrading the SDK no longer silently retargets your calls at a newer API version. Per-product .v1 pinning is unchanged.
  • Correct raw_response typing@overload so raw_response=True is typed as RawResponse and the default returns the typed model.

Internals: IO-free envelope/retry logic extracted to _base.py and shared by the sync and async clients.

v0.2.0

Choose a tag to compare

@imacross imacross released this 17 Jun 16:42

Per-API version pinning

Each CrawlSnap data product is now versioned independently. A direct resource call targets that product's latest API version; pin a single product to a specific version via its .v1 namespace — without affecting the others.

crawlsnap.vector_snap.ip("8.8.8.8")        # latest VectorSnap
crawlsnap.vector_snap.v1.ip("8.8.8.8")     # pinned VectorSnap v1
crawlsnap.pulse_snap.url("https://x.com")  # unaffected — still latest PulseSnap

Pinned namespaces are typed and lazily cached, and each version keeps its own return types so a future v2 can coexist with v1 instead of breaking v1 callers.

v0.1.1

Choose a tag to compare

@imacross imacross released this 08 Jun 14:40

Branding & docs: CrawlSnap is positioned as a data intelligence platform.

  • Updated package description, README, and module docstring.
  • No API or behavior changes — the client is identical to 0.1.0.

v0.1.0

Choose a tag to compare

@imacross imacross released this 08 Jun 12:25

Initial release of the official CrawlSnap Python SDK.

  • crawlsnap.init(api_key=...) singleton + explicit CrawlSnap client
  • Resource namespacing: crawlsnap.vector_snap.ip("8.8.8.8"), pulse_snap, subdo_snap
  • Returns typed data; raises typed exceptions (NotFoundError, QuotaExceededError, RateLimitError, ...)
  • Built-in retries with exponential backoff, configurable timeout, auto-pagination
  • httpx + pydantic v2; Python 3.8+

Install: pip install crawlsnap