api.tipmoto.com » API documentation » Agendas » Dealers list » Dealer » Statistics » Ad table

Agenda stats (ad table)

Totals of the metrics for a chosen period for the individual ads of one section (moto, dily or prislusenstvi): ad detail views, impressions in result lists, click-throughs to the dealer's website, replies to the ad, saves to favourites, video plays and promotion boxes. One record = one ad, with sorting, filtering and pagination. You thus get thousands of ads with one request instead of the statistics of each ad separately.
Based on the same counters and rules as the statistics in the dealer administration, the statistics of a single ad and the dealer statistics. The agenda is read-only and requires the statsperm permission. How the numbers are produced and how to read them is described in detail in the Statistics methodology.

Agenda features

Name Options
Supported methods GET
Support for detail levels ✔ (own selection of metrics, see detail levels)
Support for filtering ✔ (see Sorting and filter)
Support for full-text search ✘
Support for pagination ✔ (with an exception, see Pagination)
Support for sorting ✔ (see Sorting and filter)
Support for external identifiers ✘
Support for schemas https://api.tipmoto.com/schemas/stats/{moto|dily|prislusenstvi}.{xsd|rng}
Support for ?fail-on-warning ✘
Support for dry-run ✘
Returns location ✘

Address

https://api.tipmoto.com/c/{dealer ID}/stats/{moto|dily|prislusenstvi}.{xml|json|html}

Permissions

Parameters

Parameter Values Default Description
from, to YYYY-MM-DD see Range First and last day of the range (inclusive). If from is later than to, they are swapped. Only from: to = today. Only to: from = to − 27 days.
location 1, 2, 3, 4 (several separated by commas, e.g. 1,2) all placements Filter by placement. The totals and the selection of rows (traffic in the range) are calculated only from the chosen placements. Any filter excludes the reconstructed history (placement 0), so the metrics then start on the day when measurement by placement began. A metric that does not arise in the selected placements is missing from the document. A repeated value is merged, an empty location= means no filter, 0 is an invalid value.
detail id, summary, full, custom:… summary Which columns and metrics the records contain, see detail levels. Neither the selection of rows nor the pages depend on the detail level.
order column and direction (ASC, DESC), several separated by commas zobrazeni DESC Sorting, see Sorting and filter.
filter expression, e.g. zobrazeni > 10 and archiv = '0' – Filtering, see Sorting and filter.
limit, start non-negative integer 500, 0 Pagination, see Pagination. limit=0 and a limit above 5000 both mean 5000.
period day, week, month   The table has no time series, so the value is only validated (an invalid one returns 400) and has no effect on the output. The table chooses the data source itself, see Range.
add-row-count, no-series     Change nothing: rowCount is always in the output and the table has no time series. no-series is ignored even with an invalid value.
standard lang, xpath, code-in-response, no-http-errors, sessionid   Work as everywhere in the API, see URL parameters. xpath returns XML even for .json.
not supported section, breakdown, fulltext, ftx-loc, usrval-show   The table does not support them (the section is in the address; breakdown by placement and full-text search are not available for it) and returns 406 as soon as the parameter has a non-empty value, even 0. A parameter with an empty value (section=) is treated as not given.

An invalid value of the period, from, to, location, detail or limit parameter returns 400 with a message that lists the allowed values. Values are case-sensitive.

Detail levels

Value Content of the record
id Only id, idApi and archiv – without numbers. The metriky block is as for summary.
summary (default) id, idApi, nazev, archiv, vlozeniCas, smazaniCas and five basic metrics: zobrazeni, vypis, urlKliknuti, odpovedi, schranka.
full In addition videoPrehrani, videoDokoukano and the akcniOkno and vybirame blocks.
custom:… The columns id, idApi, nazev, archiv, vlozeniCas, smazaniCas as for summary (they are not listed) and only the listed metrics and blocks, separated by commas: zobrazeni, vypis, urlKliknuti, odpovedi, schranka, videoPrehrani, videoDokoukano, akcniOkno, vybirame. E.g. detail=custom:zobrazeni,odpovedi. Unknown items are ignored, as everywhere in the API (including videoUdrzeni, which is only in the ad statistics); if the list contains only unknown items, the records have only these columns and the document has no metriky block.

The metrics proklikFirma and proklikLogo from the dealer statistics are not in the table – they are metrics of the dealer, not of the ad.

Placements

Where the visitor saw the ad (1 main website www.tipmoto.com, 2 dealer subdomain, 3 widget on the dealer's website, 4 MotoInzerce.cz). Details are in the placement table of the ad statistics; the list is in the agenda lists/lokacestats.

Range

Table rows

Zero and not measured

Incomplete values (neuplne, dni)

The value of a metric in a row is the total for the range. If the metric covers only part of the range, it has the neuplne attribute with the reason and the dni attribute; a metric that covers the whole range has neither. Several reasons are separated by commas in this order:

Reason Meaning
mereni The metric started to be measured in the range, has a gap in the data in it, or the range contains an incomplete first day of measurement (4 September 2026 for urlKliknuti, 7 September 2026 for schranka, 24 September 2026 for video); for video also when the ad got the video only during the range. It is enough if this applies in one of the summed placements.
zivot The ad was not alive for the whole range: it was inserted or deleted within the range, or there is a gap between the lifetime segments of a re-published ad, or the metric has data only outside the lifetime (then dni="0"). The day of insertion and deletion counts as a whole day.
bezi The range contains today, which has not ended yet. With the default range every metric therefore has it.

Bots

Coverage of the metrics (metriky)

The metriky block appears once in the document, before the records, and has the same form as in the ad statistics: for every selected metric klic, nazev, od, uplneOd, dopoctenoDo, merenoOd, robotiOd, dira, pokryti and poznamka. It describes what was measured in the range and in the chosen placements, not the lifetime of the individual ads.

Metric catalogue

Key Name Sections and placements where it arises Detail
zobrazeni Ad detail views moto: 1, 2, 3
dily: 1, 2
prislusenstvi: 1, 2
summary
vypis Impressions in result lists moto: 1, 2, 3
dily: 1, 2
prislusenstvi: 1, 2
summary
urlKliknuti Click-through to the dealer's website moto: 1, 2
dily: 1, 2
prislusenstvi: 1
summary
odpovedi Replies to the ad moto: 1, 2
dily: 1, 2
prislusenstvi: 1
summary
schranka Saved to favourites moto: 1, 2
dily: 1, 2
prislusenstvi: 1
summary
videoPrehrani Video plays moto: 1, 2 full
videoDokoukano Watched to the end (video) moto: 1, 2; only for a video uploaded to TipMoto full
akcniOkno Promotion box (akční okno) – block with lokace and the metrics zobrazeni (promotion box impressions) and proklik (click-through from the promotion box) moto: 1, 2, 4
dily: 2
prislusenstvi: none
full
vybirame “Our pick” list on MotoInzerce.cz (Vybíráme z nabídky) – block with lokace and the metrics zobrazeni (list impressions) and proklik (click-through to the ad) moto: 4 full

Since when the metrics have data, the gaps in the data and the incomplete first days of measurement are given in the metric catalogue of the ad statistics. A combination of section and placement outside this table does not exist and is missing from the document.

Video

Sorting and filter

Pagination

Agenda elements

Machine name Name Type Information
rowCount Number of records integer Number of ads with traffic in the range after the filter, regardless of limit and start; always.
rozsah/od, rozsah/do Range used date Missing for an empty range.
rozsah/pozadovanoOd, rozsah/pozadovanoDo Requested range date The requested boundary (after filling in default values and swapping), only if it differs from the one used; always for an empty range.
rozsah/location Placement filter string Only if the parameter was used, e.g. 1,2.
metriky/metrika Coverage of a metric element Children klic, nazev, od, uplneOd, dopoctenoDo, merenoOd, robotiOd, dira, pokryti, poznamka, see Coverage of the metrics.
statsmoto, statsdily, statsprislusenstvi Record = one ad element According to the section in the address.
id Ad ID integer  
id@ref Link to the ad record href For a deleted ad to the archive agenda (opening it requires the permission at the 'archive' level). Missing for an ad that is no longer on the server nor in the archive.
idApi External ad ID string 64 Empty if the ad has no external ID.
nazev Ad title string As in the administration (for motorcycles category and title, for parts and accessories manufacturer and title). Not with detail=id.
archiv Deleted ad select Possible values:
  • 0 The ad is on the server (including a re-published one)
  • 1 Deleted ad
vlozeniCas Insertion of the ad datetime For a re-published ad the first insertion. Not with detail=id.
smazaniCas Deletion of the ad datetime Empty for an ad on the server. Not with detail=id.
{metrika} Total of the metric for the range integer People and unidentified visitors, see the catalogue. Missing = not measured.
{metrika}@neuplne, {metrika}@dni Incomplete value, number of complete days set, integer mereni, zivot, bezi (separated by commas); only for a metric that covers only part of the range.
{metrika}@roboti, {metrika}@aiRoboti Bots, AI bots integer See Bots.
akcniOkno, vybirame Blocks by placement element The placement is in the child lokace, followed by the metrics zobrazeni and proklik. The blocks are sorted by lokace in ascending order.

The order is fixed: in tipmoto rowCount, rozsah, metriky and the records; in a record id, idApi, nazev, archiv, vlozeniCas, smazaniCas, the metrics in catalogue order, the akcniOkno and vybirame blocks.

Example

GET /c/95/stats/moto.xml?from=2026-09-01&to=2026-09-26&limit=2&start=1 (shortened, output with lang=en):

<!--Agenda documentation at: https://api.tipmoto.com/docs/agendas/stats/inzeraty/
  Schemas (more about them at https://api.tipmoto.com/docs/ref/schemata/ ):
    https://api.tipmoto.com/schemas/stats/moto.xsd
    https://api.tipmoto.com/schemas/stats/moto.rng-->
<tipmoto>
  <!--Number of ads with traffic in the range (after the filter). The table always returns it; paging uses the parameters limit (default 500, at most 5000) and start.-->
  <rowCount>4</rowCount>
  <!--The range actually used. pozadovanoOd/pozadovanoDo are present only when the API narrowed the range (future, start of the data, whole months outside the daily data); location only when the parameter was used.-->
  <rozsah>
    <od>2026-09-01</od>
    <do>2026-09-26</do>
  </rozsah>
  <!--Coverage of the metrics in this document: od = first day with data (for the chosen placements), dopoctenoDo = until when the values are reconstructed from backups, merenoOd = since when it is the new measurement, robotiOd = since when bots are separated (attributes roboti and aiRoboti).-->
  <metriky>
    <metrika>
      <klic>zobrazeni</klic>
      <nazev>Ad detail views</nazev>
      <od>2022-05-01</od>
      <dopoctenoDo>2026-08-28</dopoctenoDo>
      <merenoOd>2026-08-29</merenoOd>
      <robotiOd>2026-08-29</robotiOd>
    </metrika>
    <!-- … vypis, urlKliknuti, odpovedi -->
    <metrika>
      <klic>schranka</klic>
      <nazev>Saved to favourites</nazev>
      <od>2026-09-07</od>
      <merenoOd>2026-09-07</merenoOd>
      <robotiOd>2026-09-07</robotiOd>
    </metrika>
  </metriky>
  <!--One ad with traffic in the range: totals for the range. Value 0 = measured and nobody came, a missing metric = not measured (the ad did not exist then, the metric was not measured or the ad had no video). dni and neuplne only for a metric that covers only part of the range (dni = whole days without incomplete days and without today).-->
  <statsmoto>
    <id ref="/c/95/moto/618162.xml">618162</id>
    <idApi/>
    <nazev>Moto Morini X-Cape 650</nazev>
    <!--1 = deleted ad (ref leads to the archive; opening it requires the archiveperm permission), 0 = the ad is on the server-->
    <archiv>0</archiv>
    <vlozeniCas>2026-09-22 15:13:04</vlozeniCas>
    <smazaniCas/>
    <zobrazeni dni="5" neuplne="zivot" roboti="11" aiRoboti="1">45</zobrazeni>
    <vypis dni="5" neuplne="zivot" roboti="97" aiRoboti="37">1766</vypis>
    <urlKliknuti dni="5" neuplne="zivot" roboti="0" aiRoboti="0">0</urlKliknuti>
    <odpovedi dni="5" neuplne="zivot">0</odpovedi>
    <schranka dni="5" neuplne="zivot" roboti="0" aiRoboti="0">0</schranka>
  </statsmoto>
  <statsmoto>
    <id ref="/c/95/moto/560675.xml">560675</id>
    <idApi/>
    <nazev>Yamaha Tracer 9 / 900</nazev>
    <archiv>0</archiv>
    <vlozeniCas>2024-09-26 15:31:54</vlozeniCas>
    <smazaniCas/>
    <zobrazeni roboti="5" aiRoboti="0">42</zobrazeni>
    <vypis roboti="108" aiRoboti="61">1220</vypis>
    <urlKliknuti dni="22" neuplne="mereni" roboti="0" aiRoboti="0">0</urlKliknuti>
    <odpovedi>0</odpovedi>
    <schranka dni="19" neuplne="mereni" roboti="0" aiRoboti="0">1</schranka>
  </statsmoto>
</tipmoto>

The dealer has 4 ads with traffic in the range (rowCount); the output returns the second and third according to the default sorting zobrazeni DESC. The first ad was inserted on 22 September 2026, so its metrics have neuplne="zivot" and dni="5" (22–26 September). For the second, urlKliknuti started to be measured on 4 September and schranka on 7 September 2026 (first days incomplete), hence dni="22" and dni="19". odpovedi has no bot attributes because the range starts before its robotiOd (8 September 2026).

JSON

GET /c/95/stats/moto.json?from=2026-09-01&to=2026-09-26&limit=2&start=1&detail=custom:zobrazeni,urlKliknuti,akcniOkno (line breaks added, shortened, … = omitted, output with lang=en). The promotion box in placement 4 had a gap in the data on 15–16 September 2026, so it has dni="24" and neuplne="mereni":

{
  "tipmoto": {
    "rowCount": "4",
    "rozsah": {"od": "2026-09-01", "do": "2026-09-26"},
    "metriky": {"metrika": [
      {"klic": "zobrazeni", "nazev": "Ad detail views", "od": "2022-05-01", "dopoctenoDo": "2026-08-28", "merenoOd": "2026-08-29", "robotiOd": "2026-08-29"},
      {"klic": "urlKliknuti", "nazev": "Click-through to the dealer's website", "od": "2026-09-04", "merenoOd": "2026-09-04", "robotiOd": "2026-09-04"},
      {"klic": "akcniOkno", "nazev": "Promotion box (akční okno)", "od": "2026-08-29", "merenoOd": "2026-08-29", "robotiOd": "2026-08-29", "pokryti": [{"lokace": "1", "od": "2026-08-29"}, {"lokace": "2", "od": "2026-08-29"}, {"lokace": "4", "od": "2026-08-29", "dira": [{"od": "2026-09-15", "do": "2026-09-16"}]}]}
    ]},
    "statsmoto": [
      {"id": "618162", …},
      {"id": "560675", "idApi": "", "nazev": "Yamaha Tracer 9 / 900", "archiv": "0", "vlozeniCas": "2024-09-26 15:31:54", "smazaniCas": "",
       "zobrazeni": "42", "urlKliknuti": "0",
       "akcniOkno": [
         {"lokace": "1", "zobrazeni": "0", "proklik": "0", "zobrazeni@roboti": "0", "zobrazeni@aiRoboti": "0", "proklik@roboti": "0", "proklik@aiRoboti": "0"},
         …,
         {"lokace": "4", "zobrazeni": "0", "proklik": "0", "zobrazeni@dni": "24", "zobrazeni@neuplne": "mereni", "zobrazeni@roboti": "0", "zobrazeni@aiRoboti": "0", "proklik@dni": "24", "proklik@neuplne": "mereni", "proklik@roboti": "0", "proklik@aiRoboti": "0"}
       ],
       "id@ref": "/c/95/moto/560675.json",
       "zobrazeni@roboti": "5", "zobrazeni@aiRoboti": "0",
       "urlKliknuti@dni": "22", "urlKliknuti@neuplne": "mereni", "urlKliknuti@roboti": "0", "urlKliknuti@aiRoboti": "0"}
    ]
  }
}

Errors

An error has the form <tipmoto><chyby><chyba>…</chyba></chyby></tipmoto> in the format of the request (.xml, .json, .html) and respects lang, code-in-response and no-http-errors, see Error handling.

HTTP code When
400 invalid value of the period, from, to, location (including 0), detail or limit parameter (a value other than a non-negative integer); the message lists the allowed values
402 the login does not have the statsperm permission for the dealer (even if it has no access to the dealer at all); the dealer is suspended or does not have exports allowed
404 a section in the address other than moto, dily, prislusenstvi; the address does not exist
405 a method other than GET
406 an unsupported parameter (section, breakdown, fulltext, ftx-loc, usrval-show, even with the value 0); order or filter on a column that the chosen detail level does not output, on a metric that was not measured in the chosen range (the message says since when it is measured), on a metric that does not arise in the section or in the chosen placements, or on video at a dealer without video; an invalid filter expression; an invalid xpath; the query is too demanding – shorten the range (from, to) or select fewer metrics (detail=custom:…)
500 an error while executing the query on our server
503 the database server is unavailable; repeat the request later

Example detail=id&order=nazev (with lang=en):

<tipmoto>
  <chyby>
    <chyba>Parameter 'order': the column 'nazev' is not output at the selected detail level; sorting and filtering are possible only by output columns.</chyba>
  </chyby>
</tipmoto>

Extensibility

Elements, attributes and values (e.g. new metrics, blocks or neuplne reasons) may be added; the meaning of an existing element does not change. Ignore unknown elements, attributes and values. New elements are added at the end of the fixed order. A client that validates the output must use the current schema after an extension. We record every extension in the changelog.

TipMoto.com Contact us