Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Evomi Scraper Laravel Package

pisotskyi-el/evomi-scraper

A Laravel wrapper for the Evomi proxy service that simplifies web scraping. Configure residential or datacenter proxies, route requests through Evomi, and handle responses with a clean, fluent API. Ideal for collecting data reliably while avoiding blocks and rate limits.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Verdict up front: this is an unvetted, zero-adoption wrapper around a third-party commercial API. The decision to use it is really two decisions — use Evomi, and use this package instead of ~150 lines of your own HTTP client code. The first is a vendor decision; the second is almost certainly a "no" unless a source review changes the picture.

Architecture fit

  • The package sits at the edge of the application, not in the domain. It is a transport adapter: auth, request shaping, response hydration into DTOs. That is a clean, low-coupling place to put a dependency, provided the DTOs do not leak upward into services or controllers.
  • Conventional shape for a Laravel API wrapper is a service provider, a config file, a facade or injectable client, and a Data namespace of DTOs (often Spatie Laravel Data or plain readonly classes). Verify this rather than assume; the description is the only spec available.
  • Fit is conditional on you already being a Laravel shop and already committed to Evomi. As a generic scraping abstraction it has no value — it is provider-specific by name and design.

Integration feasibility

  • Mechanically trivial: composer require, publish config, set credentials in .env. Days, not weeks, for a happy-path integration.
  • Real feasibility risk is coverage and behavior, not installation. Unknown whether it wraps Evomi's full surface (sync scrape, async jobs, rendering options, geo targeting, session/proxy controls) or a subset.
  • Unknown error contract: exceptions vs result objects, mapping of HTTP 4xx/5xx, handling of Evomi-specific failure codes, and whether partial failures on batch requests are representable at all.

Technical risk

  • Adoption signal is the dominant risk. Zero stars, zero dependents, no downstream users means no one has exercised this in production and found the bugs for you. The opportunity score (34) corroborates a thin or unproven package.
  • Bus factor of one. Single-author package on a personal GitLab namespace. No evidence of CI, test coverage, release cadence, or issue history. Abandonment is the base case, not the tail case.
  • Supply chain. Composer packages execute arbitrary code at autoload and may ship install scripts. A package with no review surface should go through the same vetting as any third-party dependency: license check, source read, composer.lock pinning, and ideally a private fork.
  • Coupling to a moving vendor API. If Evomi changes response shapes, DTO hydration breaks — and with strict typed constructors that surfaces as a TypeError deep in a request cycle rather than a clean error.
  • Version/constraint ambiguity. PHP and Laravel version support, and whether the package pins Evomi API versions, are unknown.

Key questions to answer before any code is written

  1. Which Evomi endpoints and options are covered, and which are stubbed or missing?
  2. Is there a test suite, and does it hit a sandbox or only mocks? Are the mocks derived from real responses?
  3. How are errors, rate limits, and retry/backoff handled — and does retry interact safely with paid credit consumption?
  4. Are DTOs strict or tolerant of additive fields? What happens when Evomi adds a field tomorrow?
  5. Is the HTTP layer the Laravel client (testable via Http::fake) or raw Guzzle/cURL (harder to fake, no middleware reuse)?
  6. License terms, release tags, and last-commit date.
  7. Does it support async/batch jobs, or only synchronous single-URL calls?

Integration Approach

Stack fit

  • Assumes Laravel (9/10/11/12 — confirm) and PHP 8.1+. Fits a standard Laravel service-oriented codebase with little friction.
  • Does not fit non-Laravel PHP, and does not fit shops that have standardized on Saloon or a shared internal HTTP-client convention — introducing a second integration idiom for one vendor is a real consistency cost.

Migration path

  • Do not consume the package's DTOs directly in application code. Define a narrow internal port (e.g., ScraperClient interface with your own request/response value objects) and implement it with an adapter over this package. This is the single highest-leverage decision here: it caps the blast radius of abandonment, breaks, or a later switch to raw HTTP or a different provider at one file.
  • If the package proves thin or stale, the adapter is also the seam where you replace it with a hand-rolled client. Budget that as a likely outcome, not a contingency.
  • Consider vendoring or a private fork from day one so upstream deletion or a namespace move cannot break your build.

Compatibility

  • Pin to an exact version (composer require vendor/pkg:1.0.0, not ^1.0). With no downstream users, minor bumps carry unadvertised breaking changes.
  • Verify transitive dependency footprint before merge — a wrapper this small should not pull in a large tree.
  • Confirm the package does not collide with your existing HTTP middleware, proxy config, or logging conventions.

Sequencing

  1. Source review spike (0.5–1 day). Read the code end to end. Answer the key questions. This is the go/no-go gate, and a "no" here is a good outcome — the fallback is a small internal client.
  2. Vendor decision in parallel. Confirm Evomi commercially (pricing model, credit consumption on retries, SLA, data handling, DPA if scraping regulated content). The package decision is downstream of this.
  3. Adapter + contract tests. Build the internal port, implement with the package, and write contract tests against Evomi's sandbox that assert response shape — so vendor drift fails loudly in CI rather than in production.
  4. Pilot one non-critical scraping flow. Measure credit burn, latency, and failure rates before broadening.
  5. Broaden, or swap the adapter implementation if step 1–4 surfaced problems. The seam makes this cheap.

Operational Impact

Maintenance

  • Treat this as code you own. Zero dependents means zero passive bug-finding; you will be the first to hit most defects. Plan for a fork and a named owner for it.
  • Expect no security patching cadence. Add it to your dependency-review list with an explicit "monitor upstream or maintain fork" note.

Support

  • No community, no Stack Overflow corpus, no Discord. Escalation path is the maintainer's GitLab issues and, ultimately, Evomi's own support — which will not know this package exists.
  • On-call engineers will debug through third-party source. Factor that into incident-response documentation; require the adapter to log the raw vendor response so responders are not reverse-engineering a DTO hydration failure at 3 a.m.

Scaling

  • Scaling characteristics belong to Evomi, not this package. The wrapper adds negligible CPU and no meaningful memory overhead.
  • Real scaling levers are concurrency (does the package expose parallel or queued batch execution, or serialize everything?), connection reuse, and credit/rate-limit budgeting. If it only does synchronous single-URL calls, throughput ceiling is your queue workers, not the vendor.
  • Paid-credit APIs and naive retry logic are a cost incident waiting to happen. Confirm retry semantics before enabling any autoscaling of scrape jobs.

Failure modes to design against

  • Silent shape drift: vendor adds or renames a field, strict DTO hydration throws or drops data. Mitigation: contract tests plus tolerant deserialization.
  • Credential leakage: API keys surfacing in exception traces or HTTP logs. Mitigation: redact in the adapter, verify the package does not log request headers.
  • Credit burn on retry: transient error handling retries a billable request. Mitigation: cap retries, classify errors as billable/non-billable.
  • Unhandled vendor error codes: generic exceptions losing the vendor's diagnostic payload. Mitigation: catch at the adapter boundary, preserve the raw body.
  • Abandonment/deletion: repo or package disappears. Mitigation: private fork plus pinned lockfile.
  • Synchronous blocking in request path: scrape calls inline in a web request. Mitigation: always queue.

Ramp-up

  • Low for a competent Laravel developer — the surface is small and the pattern is familiar. Half a day to first working call if the source is clean.
  • Documentation is likely thin-to-absent given the adoption profile. Budget for reading source rather than docs, and write the internal README yourself as part of integration.
  • Total realistic cost to adopt safely: 3–5 engineer-days including source review, adapter, contract tests, and pilot — versus roughly 1–2 days to write and own a direct client against Evomi's REST API. That delta is the honest price of the convenience this package offers, and on this evidence it is not obviously worth paying.
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
se7enxweb/flysystem
lampwick/laravel
jeslage/statamic-emojis
micahdshackelford/rmap-laravel
draftsmaninc/draftsman
square-bit/laravel-volition
himito/laravel-mailman
htinlynn/genius-helper
maco-studios/hephaestus
elmogy/larafast
xeviant/laravel-paystack
gorilladash/laravel-website-sdk
martialbe/flysystem-oss
chondal/3312client
jeroen-g/flickr
opscale-co/nova-genbi
itsjustvita/laravel-retention
tequilarapido/trackit
gregsphotography/site-builder-filament
cabaoctavio/laravel-query-log