> ## Knowledge Base Index
> Fetch the complete knowledge base index at: https://help.repliers.com/sitemap.xml
> Use this file to discover available pages before exploring further.
> Pure-Markdown content can be obtained by appending a '.md' suffix to the content URLs listed in the sitemap (without the trailing slash).

# HAR.com Data: Listing Views, Reviews & Showing Logs

# HAR.com Partner Data: Listing Views, Reviews & Showing Logs

Through our partnership with HAR.com, HAR members who subscribe to Repliers automatically get access to some extra HAR.com data through the API. This article covers what's available and how to use it.

Partnership background: [Repliers + HAR.com Partnership](https://repliers.com/repliers-har-partnership-real-time-mls-data/)

## What's included

| Data | Endpoint | What it answers |
| ---- |
| Listing view analytics | `GET /partners/har/listings/views` | "How much traffic is my listing getting on HAR.com?" |
| Customer experience ratings | `GET /partners/har/listings/reviews` | "What reviews have I received on recent closed transactions?" |
| ShowingSmart logs | `GET /partners/har/showingsmart/logs` | "Who has shown my listings, or what have I shown?" |

All three endpoints live under the `/partners/har/` path and return results in the same basic shape: `success`, `total`, `limit`, `offset`, and a `data` array with the actual records.

## See it in action: HAR Data Explorer

If you'd rather explore the data before writing any code, check out the [**HAR Data Explorer**](https://github.com/Repliers-io/Har-Data-Explorer) — an open-source proof-of-concept web dashboard built on these endpoints. Clone it, add your Repliers API key, and you'll have a running dashboard in minutes showing:

* Listing web and mobile view analytics
* Client transaction reviews and component scores
* ShowingSmart showing activity and feedback
* An overview of traffic, review, and showing totals

It's also a useful reference implementation if you're building your own integration: it demonstrates a proxy-based architecture where the browser talks to a local API server that securely forwards requests to Repliers, so the API key is never exposed to the browser. Setup instructions are in the [repo README](https://github.com/Repliers-io/Har-Data-Explorer#getting-started).

## Listing enrichment

Every record returned by these endpoints is enriched with details about the associated listing, so you can display context — the property address, a photo, pricing — without making a separate lookup. Each item includes:

| Field | Description |
| ---- |
| `address` | Full address object: `streetNumber`, `streetName`, `streetSuffix`, `city`, `state`, `zip`, `neighborhood`, `area`, `country`, plus a normalized `addressKey` |
| `images` | Array of listing image paths |
| `listDate` | Date the property was listed |
| `soldDate` | Date the property sold, `null` if not sold |
| `listPrice` | List price |
| `soldPrice` | Sold price, `null` if not sold |
| `details` | Property summary: `numBedrooms`, `numBathrooms`, `sqft`, `numGarageSpaces`, `propertyType`, `style` |

You'll see these fields in the example responses for each endpoint below.

## Getting access

You don't need to request or configure anything manually. When you log into Repliers with a verified email address that matches an email on file in HAR's roster, your API key is automatically set up for HAR access. If you're not seeing HAR data and think you should, the most common cause is a mismatch between your Repliers login email and the email HAR has on record for you — double check those match, or reach out to support to confirm.

## Who can see what

* What data you can see depends on whether you're set up as an individual agent or as the brokerage as a whole:
* **Agents** only see their own data.
* **Brokers** can see data for every agent at the brokerage.

If an agent tries to look up another agent's data by name, that request will either be blocked or automatically redirected back to the agent's own data — the exact behavior is noted separately for each endpoint below, since it works a little differently on each one.

## Common parameters

All three endpoints support:

| Parameter | Description |
| ---- |
| `mlsNumber` | Filter to a single listing by MLS number |
| `dateBegin` / `dateEnd` | Inclusive date range, `YYYY-MM-DD` |
| `sortBy` | Sort by a column, optionally suffixed `:asc` or `:desc` (defaults to `:asc`) |
| `limit` | Max records to return (1–500) |
| `offset` | Records to skip, for pagination |

---

## 1. Listing view statistics

`GET /partners/har/listings/views`

Returns per-listing, per-day web and mobile view counts tracked by HAR.com, with each record enriched with the listing's details. Each record also includes the listing agent's display name in `agentName`, alongside their `laAgentkey`.

### Parameters

In addition to the common parameters above:

| Parameter | Description |
| ---- |
| `boardAgentId` | Filter to a listing agent by board agent key |

**A note on access:** If you're an individual agent, results are always limited to you — no matter what you put in `boardAgentId`. If you try to explicitly request a *different* agent's data, the request will be blocked with a `403` error.

**Sortable columns:** `laAgentkey`, `mlsNumber`, `dateTracked`, `webView`, `mobileView`

### Example request

```
GET /partners/har/listings/views?mlsNumber=12345678&dateBegin=2026-06-01&dateEnd=2026-06-30&sortBy=dateTracked:desc
```

### Example response

```json
{
  "success": true,
  "total": 1,
  "limit": 500,
  "offset": 0,
  "data": [
    {
      "dateTracked": "2026-06-15",
      "laAgentkey": "AGT4821",
      "agentName": "Alex Morgan",
      "mlsNumber": "12345678",
      "webView": 34,
      "mobileView": 51,
      "address": {
        "area": "Harris",
        "city": "Houston",
        "country": "US",
        "district": null,
        "majorIntersection": null,
        "neighborhood": "Maplewood Park",
        "streetDirection": null,
        "streetName": "Maplewood",
        "streetNumber": "123",
        "streetSuffix": "Lane",
        "unitNumber": null,
        "zip": "77001",
        "state": "TX",
        "communityCode": null,
        "streetDirectionPrefix": null,
        "addressKey": "123maplewoodlanehouston"
      },
      "images": [
        "har/IMG-12345678_1.jpg"
      ],
      "listDate": "2026-05-01T00:00:00.000-00:00",
      "soldDate": null,
      "listPrice": 425000,
      "soldPrice": null,
      "details": {
        "numBedrooms": 4,
        "numBathrooms": 3,
        "sqft": "2650",
        "numGarageSpaces": 2,
        "propertyType": "Residential",
        "style": "Single Family Residence"
      }
    }
  ]
}
```

---

## 2. Customer experience ratings (reviews)

`GET /partners/har/listings/reviews`

Returns client-submitted ratings tied to closed transactions, scored across competency, knowledge, communication, and overall experience. Each review is enriched with the details of the listing it relates to.

### Parameters

In addition to the common parameters above:

| Parameter | Description |
| ---- |
| `boardAgentId` | Filter to the rated agent by board agent key |

**A note on access:** Same as listing views — as an individual agent, you only ever see your own reviews, and asking for a different agent's `boardAgentId` returns a `403` error.

**Sortable columns:** `mlsNumber`, `memberNumber`, `agentId`, `agentkey`, `agentEmail`, `clientName`, `clientEmail`, `transactionType`, `score`, `competency`, `knowledge`, `communication`, `myExperience`, `closedDate`, `publishDate`, `createdDate`

### Key response fields

| Field | Description |
| ---- |
| `agentName` | Display name of the rated agent |
| `score` | Overall rating (may be fractional across the four component scores) |
| `competency`, `knowledge`, `communication`, `myExperience` | Component ratings |
| `comments` | Free-text review from the client |
| `agentComment` | Agent's response, `null` if none was submitted |
| `transactionType` | Side of the deal the review relates to (e.g. `sell`, `list`) |

### Example request

```
GET /partners/har/listings/reviews?dateBegin=2026-01-01&dateEnd=2026-06-30&sortBy=closedDate:desc&limit=25
```

### Example response

```json
{
  "success": true,
  "total": 1,
  "limit": 25,
  "offset": 0,
  "data": [
    {
      "agentComment": null,
      "agentEmail": "agent@example.com",
      "agentkey": "AGT4821",
      "agentId": "AGT4821",
      "agentName": "Alex Morgan",
      "brokerCode": "BRK001",
      "clientEmail": "jrivera@example.com",
      "clientName": "J. Rivera",
      "closedDate": "2026-05-20",
      "comments": "Very responsive throughout the process.",
      "communication": 4,
      "competency": 5,
      "createdDate": "2026-05-22T09:15:00.000000",
      "knowledge": 5,
      "memberNumber": 998877,
      "mlsNumber": "12345678",
      "myExperience": 5,
      "publishDate": null,
      "score": 4.75,
      "transactionType": "sell",
      "address": {
        "area": "Harris",
        "city": "Houston",
        "country": "US",
        "district": null,
        "majorIntersection": null,
        "neighborhood": "Maplewood Park",
        "streetDirection": null,
        "streetName": "Maplewood",
        "streetNumber": "123",
        "streetSuffix": "Lane",
        "unitNumber": null,
        "zip": "77001",
        "state": "TX",
        "communityCode": null,
        "streetDirectionPrefix": null,
        "addressKey": "123maplewoodlanehouston"
      },
      "images": [
        "har/IMG-12345678_1.jpg"
      ],
      "listDate": "2026-03-10T00:00:00.000-00:00",
      "soldDate": "2026-05-20T00:00:00.000-00:00",
      "listPrice": 425000,
      "soldPrice": 431000,
      "details": {
        "numBedrooms": 4,
        "numBathrooms": 3,
        "sqft": "2650",
        "numGarageSpaces": 2,
        "propertyType": "Residential",
        "style": "Single Family Residence"
      }
    }
  ]
}
```

---

## 3. ShowingSmart showing logs

`GET /partners/har/showingsmart/logs`

Returns showing records — scheduling details, showing agent contact info, and any post-showing feedback — for listings shown or showings conducted.

**Results are grouped by listing.** Each item in the `data` array represents a single listing, identified by its `mlsNumber`, with:

* a `logs` array containing every showing record for that listing (scheduling details, showing agent info, comments, and feedback), and
* the listing enrichment fields (`address`, `images`, `listDate`, `soldDate`, `listPrice`, `soldPrice`, `details`).

`total`, `limit`, and `offset` apply to listings (groups), not to individual showing records.

### Parameters

In addition to the common parameters above:

| Parameter | Description |
| ---- |
| `listingBoardAgentId` | Filter to showings on listings held by this board agent key |
| `showingBoardAgentId` | Filter to showings conducted by this board agent key |

**A note on access:** This endpoint covers two roles — the listing agent and the showing agent — so it works a little differently from the other two:

* As an individual agent, you'll always see showings tied to you in at least one of those roles.
* If you put a *different* agent in `listingBoardAgentId`, you'll just get your own showings back instead of an error.
* If you put a *different* agent in `showingBoardAgentId`, you'll just get your own listings back instead.
* If you try to name a different agent in **both** fields at the same time, the request is blocked with a `403` error.

In short: as an agent, you can always see showings where you're the listing agent, the showing agent, or both — you just can't use the two filters together to pull up someone else's data on both sides.

**Sortable columns:** `listingkey`, `showingId`, `saComments`, `showingDate`, `showingStartTime`, `showingEndTime`, `showingType`, `showingStatus`, `saAgentkey`, `saCellPhone`, `saEmail`, `saOfficeName`, `saOfficekey`, `feedbackText`, `laAgentkey`, `laCellPhone`, `laEmail`, `laOfficeName`, `laOfficekey`

### Key response fields

Each entry in a listing's `logs` array includes:

| Field | Description |
| ---- |
| `showingType` | HAR showing type code — e.g. `SHOWG` (showing), `INSPT` (inspection), `WALKT` (walkthrough) |
| `showingStatus` | HAR status code — e.g. `SETUP`, `CONFM` (confirmed), `UNCFM` (unconfirmed), `ALTER` (altered), `CANCL` (cancelled) |
| `saComments` | Comments left by the showing agent when booking |
| `feedbackText` | Post-showing feedback, `null` if none was submitted |
| `listAgentName` | Display name of the listing agent |
| `showingAgentName` | Display name of the showing agent |
| `la*` fields | Listing agent details (agent key, cell, email, office) |
| `sa*` fields | Showing agent details (agent key, cell, email, office) |

> **Note:** `listagentAgentkey` and `listofficeOfficekey` are deprecated and not sortable — use `laAgentkey` and `laOfficekey` instead.

### Example request

```
GET /partners/har/showingsmart/logs?mlsNumber=12345678&dateBegin=2026-06-01&dateEnd=2026-06-30&sortBy=showingDate:desc
```

### Example response

```json
{
  "success": true,
  "total": 1,
  "limit": 50,
  "offset": 0,
  "data": [
    {
      "mlsNumber": "12345678",
      "logs": [
        {
          "showingId": 883421,
          "showingDate": "2026-06-18",
          "showingStartTime": "2026-06-18T15:00:00",
          "showingEndTime": "2026-06-18T15:30:00",
          "showingType": "SHOWG",
          "showingStatus": "CONFM",
          "laOfficeName": "Example Realty",
          "laOfficekey": "OFF1001",
          "laAgentkey": "AGT4821",
          "listAgentName": "Alex Morgan",
          "laCellPhone": "5550101",
          "laEmail": "listingagent@example.com",
          "saOfficeName": "Another Realty",
          "saOfficekey": "OFF1002",
          "saAgentkey": "AGT7734",
          "showingAgentName": "Jordan Blake",
          "saCellPhone": "5550199",
          "saEmail": "showingagent@example.com",
          "saComments": "Client loved the kitchen layout.",
          "feedbackText": "Great condition, price feels slightly high for the area.",
          "listagentAgentkey": "AGT4821",
          "listofficeOfficekey": "OFF1001"
        },
        {
          "showingId": 883205,
          "showingDate": "2026-06-17",
          "showingStartTime": "2026-06-17T18:00:00",
          "showingEndTime": "2026-06-17T19:00:00",
          "showingType": "SHOWG",
          "showingStatus": "CANCL",
          "laOfficeName": "Example Realty",
          "laOfficekey": "OFF1001",
          "laAgentkey": "AGT4821",
          "listAgentName": "Alex Morgan",
          "laCellPhone": "5550101",
          "laEmail": "listingagent@example.com",
          "saOfficeName": "Sample Properties Group",
          "saOfficekey": "OFF1003",
          "saAgentkey": "AGT2210",
          "showingAgentName": "Casey Nguyen",
          "saCellPhone": "5550142",
          "saEmail": "agent2210@example.com",
          "saComments": "",
          "feedbackText": null,
          "listagentAgentkey": "AGT4821",
          "listofficeOfficekey": "OFF1001"
        }
      ],
      "address": {
        "area": "Harris",
        "city": "Houston",
        "country": "US",
        "district": null,
        "majorIntersection": null,
        "neighborhood": "Maplewood Park",
        "streetDirection": null,
        "streetName": "Maplewood",
        "streetNumber": "123",
        "streetSuffix": "Lane",
        "unitNumber": null,
        "zip": "77001",
        "state": "TX",
        "communityCode": null,
        "streetDirectionPrefix": null,
        "addressKey": "123maplewoodlanehouston"
      },
      "images": [
        "har/IMG-12345678_1.jpg"
      ],
      "listDate": "2026-05-01T00:00:00.000-00:00",
      "soldDate": null,
      "listPrice": 425000,
      "soldPrice": null,
      "details": {
        "numBedrooms": 4,
        "numBathrooms": 3,
        "sqft": "2650",
        "numGarageSpaces": 2,
        "propertyType": "Residential",
        "style": "Single Family Residence"
      }
    }
  ]
}
```

---

## Errors

| Status | Meaning |
| ---- |
| `400` | Malformed request — check parameter formats (dates must be `YYYY-MM-DD`, `sortBy` must match an allowed column) |
| `401` | Missing or invalid API key |
| `403` | The key isn't allowed to make this request — most often because the account isn't linked to a broker code (see "Getting access" above), or because an agent is asking for another agent's data in a way that isn't allowed |

## Quick recap

* **Broker accounts:** see all agents' data at the brokerage.
* **Individual agents, listing views & reviews:** always your own data; naming another agent returns a `403` error.
* **Individual agents, showing logs:** always at least your own listings or your own showings; naming a different agent on *both* filters at once returns `403`, but naming a different agent on just one filter falls back to your own data instead of erroring.
* **All endpoints** enrich each record with listing details (address, images, dates, pricing, and property summary), and showing logs are grouped by listing.
* **Want a working example?** Clone the [HAR Data Explorer](https://github.com/Repliers-io/Har-Data-Explorer) to see all three endpoints in a runnable web dashboard.

If you're not sure whether your account is linked up for HAR access, reach out to your account manager or Repliers support.