# Returning companies (https://webmetic.de/docs/api/referenz/visitor-intelligence/returning-visits)

## GET /returning-visits

Retrieves a list of companies that have visited the specified domain multiple times.

This endpoint provides information about companies that have had at least two sessions on your website
within the date range (visits before from_date do not count), each with those sessions, oldest first, indicating repeated interest or engagement. This data can be crucial for identifying potential leads,
loyal customers, or companies that might be in an active decision-making process.

Parameters:
- domain (str): The domain name for which you want to retrieve returning visitor data.
- from_date (str): Starting date/time or relative date like '-30 days', '-1 hour', '-5 minutes'. Default is '-30 days'.
- to_date (str): Ending date/time or 'now' for current date/time. Default is 'now'.

Note: This endpoint is rate-limited to 1 request per second and requires a valid API key for authentication.

### Parameter

| Name | Ort | Typ | Pflicht | Beschreibung |
| --- | --- | --- | --- | --- |
| `domain` | query | string | ja |  |
| `from_date` | query | string | nein | Starting DateTime format or relative dates like '-30 days', '-1 hour', '-5 minutes'. Examples: '2023-01-01', '-7 days', '-12 hours', '-5 minutes', 'now' |
| `to_date` | query | string | nein | Ending DateTime format or 'now' for the current date/time. Examples: '2023-01-31', 'now' |

### Antworten

| Status | Beschreibung |
| --- | --- |
| 200 | Companies with two or more visits within the date range, with those visits; every field present, null when unknown |
| 400 | INVALID_DATE: from_date or to_date cannot be read |
| 403 | API_KEY_MISSING, API_KEY_INVALID, API_KEY_NOT_FOUND, or API_KEY_NOT_AUTHORIZED: the domain is not a website of your account (send it exactly as listed there) |
| 422 | VALIDATION_ERROR: a parameter is missing or out of range (page from 1, page_size 1 to 10000); `errors` lists each problem |
| 429 | RATE_LIMITED: more than one request per second to this endpoint |
| 500 | INTERNAL_ERROR: unexpected server error |

Felder der Antwort 200:

| Feld | Typ | Pflicht | Beschreibung |
| --- | --- | --- | --- |
| `result` | Visit[] | ja | One entry per company, not paged |
| `result[].company_id` | string \| null | ja | Webmetic's id of the company (12 characters). /contacts takes it. |
| `result[].company_name` | string \| null | ja | Company name. On Free a hidden company reads 'Verborgenes Unternehmen'. |
| `result[].address` | string \| null | ja | Street and number of the company seat |
| `result[].postal_code` | string \| null | ja | Postal code of the company seat |
| `result[].city` | string \| null | ja | City of the company seat |
| `result[].country` | string \| null | ja | Country of the company seat, as a name |
| `result[].country_code` | string \| null | ja | Country of the company seat, ISO 3166-1 alpha-2 |
| `result[].directors` | string[] \| null | ja | Managing directors from the imprint |
| `result[].email_pattern` | string \| null | ja | Opaque code of the company's most common e-mail address format, e.g. p1 |
| `result[].email_pattern_confidence` | number \| null | ja | Confidence of email_pattern, 0 to 100 with one decimal |
| `result[].phone_number` | string \| null | ja | General phone number of the company |
| `result[].fax_number` | string \| null | ja | Fax number of the company |
| `result[].email_address` | string \| null | ja | General email address of the company |
| `result[].vat_id` | string \| null | ja | VAT identification number |
| `result[].tax_number` | string \| null | ja | Tax number |
| `result[].registration_number` | string \| null | ja | Commercial register number |
| `result[].registration_court` | string \| null | ja | Register court |
| `result[].company_url` | string \| null | ja | Website of the company |
| `result[].company_logo_url` | string \| null | ja | URL of the company logo |
| `result[].linkedin` | string \| null | ja | LinkedIn page of the company |
| `result[].facebook` | string \| null | ja | Facebook page of the company |
| `result[].instagram` | string \| null | ja | Instagram account of the company |
| `result[].youtube` | string \| null | ja | YouTube channel of the company |
| `result[].twitter` | string \| null | ja | X (Twitter) account of the company |
| `result[].short_description_en` | string \| null | ja | Short description in English |
| `result[].short_description_de` | string \| null | ja | Short description in German |
| `result[].full_description_en` | string \| null | ja | Long description in English |
| `result[].full_description_de` | string \| null | ja | Long description in German |
| `result[].lead_score` | number \| null | ja | Activity of the company's visits, 0 to 100 |
| `result[].fit_score` | integer \| null | ja | Match against the domain's ideal customer profile, 0 to 100; null without a profile |
| `result[].relevance_score` | number \| null | ja | fit_score × lead_score / 100, equals lead_score without a profile. Rank by this. |
| `result[].nace_codes` | NaceCode[] \| null | ja | Industry codes, NACE Rev. 2.1 |
| `result[].employee_count` | (integer \| null)[] \| null | ja | Employees as a range [min, max]; max null means open-ended |
| `result[].revenue` | (number \| null)[] \| null | ja | Annual revenue in euros as a range [min, max]; max null means open-ended |
| `result[].timestamp` | string \| null | ja | Start of the visit, UTC, ISO 8601 without offset, e.g. 2026-10-20T08:20:26.384000, copied from the earliest visit in sessions |
| `result[].weburl` | string \| null | ja | Your website that was visited, copied from the earliest visit in sessions |
| `result[].utm_source` | string \| null | ja | utm_source of the landing URL, copied from the earliest visit in sessions |
| `result[].utm_medium` | string \| null | ja | utm_medium of the landing URL, copied from the earliest visit in sessions |
| `result[].utm_campaign` | string \| null | ja | utm_campaign of the landing URL, copied from the earliest visit in sessions |
| `result[].utm_term` | string \| null | ja | utm_term of the landing URL, copied from the earliest visit in sessions |
| `result[].utm_content` | string \| null | ja | utm_content of the landing URL, copied from the earliest visit in sessions |
| `result[].utm_campaign_id` | string \| null | ja | Campaign id of the landing URL (utm_id), copied from the earliest visit in sessions |
| `result[].click_id` | string \| null | ja | Ad click id from the landing URL, copied from the earliest visit in sessions |
| `result[].click_type` | string \| null | ja | Parameter the click id came from, e.g. gclid, copied from the earliest visit in sessions |
| `result[].session_duration` | number \| null | ja | Length of the whole visit in seconds; 30 or more is an intensive visit, copied from the earliest visit in sessions |
| `result[].session_time` | number \| null | ja | Average seconds per page view of the visit, copied from the earliest visit in sessions |
| `result[].visitor_city` | string \| null | ja | City of the visitor's network location, copied from the earliest visit in sessions |
| `result[].visitor_country` | string \| null | ja | Country of the visitor's network location, as a name, copied from the earliest visit in sessions |
| `result[].visitor_zip` | string \| null | ja | Postal code of the visitor's network location, copied from the earliest visit in sessions |
| `result[].visitor_country_code` | string \| null | ja | Country of the visitor's network location, ISO 3166-1 alpha-2, copied from the earliest visit in sessions |
| `result[].sessions_total` | integer \| null | ja | Number of visits in sessions |
| `result[].pages_total` | integer \| null | ja | Number of page views over all visits |
| `result[].blurred` | boolean \| null | nein | Only on Free, for a company past the month's readable ones: true, and only the ids and visit times are given |
| `result[].sessions` | VisitSession[] | ja | The matching visits in the date range, oldest first |

### Beispiel

```bash
curl -X GET 'https://hub.webmetic.de/returning-visits?domain=website.example' \
  -H 'Authorization: wmtc_IHR_API_SCHLUESSEL'
```