PHPackages                             florianv/snoop - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Mail &amp; Notifications](/categories/mail)
4. /
5. florianv/snoop

ActiveLibrary[Mail &amp; Notifications](/categories/mail)

florianv/snoop
==============

Find informations about an email address owner

v1.0.0(11y ago)1082.6k7MITPHPPHP &gt;=5.3.3

Since Jun 14Pushed 11y ago11 watchersCompare

[ Source](https://github.com/florianv/snoop)[ Packagist](https://packagist.org/packages/florianv/snoop)[ Docs](https://github.com/florianv/snoop)[ RSS](/packages/florianv-snoop/feed)WikiDiscussions master Synced 4d ago

READMEChangelog (1)Dependencies (2)Versions (2)Used By (0)

Snoop [![Build status](https://camo.githubusercontent.com/212758483171748299d1d56944047c652d690b39a457fefccec17977ed2391ea/687474703a2f2f696d672e736869656c64732e696f2f7472617669732f666c6f7269616e762f736e6f6f702e7376673f7374796c653d666c61742d737175617265)](https://travis-ci.org/florianv/snoop) [![Version](https://camo.githubusercontent.com/776f8d69829b984b786ad192b65014309e0c1d40a89046333f35fc1f4eab514f/687474703a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f666c6f7269616e762f736e6f6f702e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/florianv/snoop) [![License](https://camo.githubusercontent.com/d4d282d9436170a189d6e7a5903ac35ea459dbe3a2c67f7c52093fb49777620b/687474703a2f2f696d672e736869656c64732e696f2f7061636b61676973742f6c2f666c6f7269616e762f736e6f6f702e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/florianv/snoop)
=================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================

[](#snoop---)

**⚠️ This tool is currently broken as Rapportive recently changed their API so the trick is not available anymore.**

Snoop finds informations about an email address owner such as its name, social profiles, images and jobs.

Installation
------------

[](#installation)

Add this line to your `composer.json` file:

```
{
    "require": {
        "florianv/snoop": "~1.0"
    }
}
```

> Currently Guzzle 3 and 4 are supported HTTP clients, so you will need to require one of them:
>
> - `"guzzle/guzzle": "~3.0"`
> - `"guzzlehttp/guzzle": "~4.0"`

Usage
-----

[](#usage)

> You can find a simple example using it [here](https://gist.github.com/florianv/ba3f2e46065543194a2b)

First, you need to create an adapter:

```
// If you use Guzzle 3
$adapter = new \Snoop\Adapter\Guzzle3Adapter(new \Guzzle\Http\Client());

// If you use Guzzle 4
$adapter = new \Snoop\Adapter\Guzzle4Adapter(new \GuzzleHttp\Client());
```

Then you can create a Snoop instance and use it:

```
// Create a Snoop instance
$snoop = new \Snoop\Snoop($adapter);

// Find the person with email 'john@doe.com'
$person = $snoop->find('john@doe.com');

$person->getFirstName(); // John
$person->getLastName(); // Doe
$person->getLocation(); // San Francisco Bay Area
$person->getHeadline(); // Developer at Google

foreach ($person->getImages() as $url) {}

foreach ($person->getJobs() as $job) {
    $job->getTitle(); // Developer
    $job->getCompanyName(); // Google
}

foreach ($person->getProfiles() as $profile) {
    $profile->getSiteName(); // Twitter
    $profile->getUsername(); // johndoe
}
```

By default, two requests will be issued: one to get a token and the other to get the informations, but you can send them separately:

```
// Fetch a token, maybe store it somewhere
$token = $snoop->fetchToken();

// Find the informations using the token
$person = $snoop->find('hello@world.com', $token);
```

### Exception handling

[](#exception-handling)

#### InvalidTokenException

[](#invalidtokenexception)

The `InvalidTokenException` is thrown when the token is missing or invalid.

```
try {
    $snoop->find('hello@world.com');
} catch (Snoop\Exception\InvalidTokenException $e) {
    // You might fetch a new token and retry
}
```

#### PersonNotFoundException

[](#personnotfoundexception)

The `PersonNotFoundException` is thrown when there is no data associated with the email.

```
try {
    $snoop->find('hello@world.com');
} catch (Snoop\Exception\PersonNotFoundException $e) {
    // This person was not found
}
```

Notes
-----

[](#notes)

- The API limit is around 50 requests with the same IP every hour
- It uses a non-documented feature of the Rapportive API explained [here](http://jordan-wright.github.io/blog/2013/10/14/automated-social-engineering-recon-using-rapportive)
- There are other implementations using it [Python](https://github.com/jordan-wright/rapportive), [Ruby](https://github.com/the4dpatrick/find-any-email)

License
-------

[](#license)

[MIT](https://github.com/florianv/snoop/blob/master/LICENSE)

###  Health Score

34

—

LowBetter than 77% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity31

Limited adoption so far

Community13

Small or concentrated contributor base

Maturity58

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Unknown

Total

1

Last Release

4353d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/c17960793811ef8d472e9e6f87003d8eba9cd4eae2b43a3893b06760883a323c?d=identicon)[florianv](/maintainers/florianv)

---

Top Contributors

[![florianv](https://avatars.githubusercontent.com/u/1586668?v=4)](https://github.com/florianv "florianv (10 commits)")

---

Tags

emailprofilesocialcontactinformation

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/florianv-snoop/health.svg)

```
[![Health](https://phpackages.com/badges/florianv-snoop/health.svg)](https://phpackages.com/packages/florianv-snoop)
```

###  Alternatives

[egulias/email-validator

A library for validating emails against several RFCs

11.6k691.3M307](/packages/egulias-email-validator)[sendgrid/sendgrid

This library allows you to quickly and easily send emails through Twilio SendGrid using PHP.

1.5k47.5M164](/packages/sendgrid-sendgrid)[pelago/emogrifier

Converts CSS styles into inline style attributes in your HTML code

94944.1M110](/packages/pelago-emogrifier)[zbateson/mail-mime-parser

MIME email message parser

53949.2M79](/packages/zbateson-mail-mime-parser)[soundasleep/html2text

A PHP script to convert HTML into a plain text format

48419.5M75](/packages/soundasleep-html2text)[putyourlightson/craft-campaign

Send and manage email campaigns, contacts and mailing lists.

6435.0k1](/packages/putyourlightson-craft-campaign)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
