Pelyr API Terms of Use
These terms govern your use of the two interfaces through which we make AIS data available against an API key:
- Pelyr Stream — the live AIS data service reachable at
wss://stream.pelyr.com, which pushes messages to you as they arrive; and - the Pelyr HTTPS API — the query service reachable at
https://api.pelyr.com, which answers requests for the current picture and for a vessel’s track over time.
Together they are the “Service”. Where a provision applies to only one of them, it says so. By requesting an API key, or by connecting to or querying the Service, you agree to these terms.
1. Who operates the Service
The Service is operated by:
Timo Zürner
private individual, operating under the brand “Pelyr”
Gerichtsstraße 13, 9300 St. Veit an der Glan, Austria
Email: hello@pelyr.com
Full details are in the Imprint. How personal data is handled is set out in the Privacy Policy.
2. What the Service is — and is not
The Service makes available AIS vessel messages that are broadcast publicly by vessels and collected from third-party feeds and from community stations. It is a pilot operated as a private, non-commercial project.
No availability commitment
The Service is provided “as is” and “as available”. There is no uptime guarantee, no service level agreement, and no commitment to any latency, completeness or accuracy of the data. We may change, suspend or discontinue the Service, in whole or in part, at any time.
3. Not for navigation. Not a safety system.
AIS data provided through this Service is for informational and situational-awareness purposes only. It may be incomplete, delayed, inaccurate, spoofed or entirely absent for any vessel or area at any time.
It must not be used as a basis for navigation, collision avoidance, search and rescue, or any other decision affecting the safety of life, health, property or the environment. It is not a substitute for the equipment and procedures required under SOLAS, COLREG or any other applicable maritime regulation, and it is not a certified or approved navigational aid.
You are responsible for ensuring that your own use, and the use by anyone to whom you make the data available, complies with this restriction.
4. Attribution — a condition you must pass on
The source data is licensed, and those licences require attribution. This is a condition of your right to use the data at all.
| Source | Licence | Required attribution |
|---|---|---|
| Fintraffic / digitraffic.fi | CC BY 4.0 | “Traffic data from Fintraffic / digitraffic.fi, licence CC BY 4.0” |
| BarentsWatch | NLOD | “Data delivered by BarentsWatch” |
| Kystverket | NLOD 2.0 | “Contains data under the Norwegian licence for Open Government data (NLOD) distributed by Kystverket (Norwegian Coastal Administration)” |
| Pelyr | Pelyr Data Licence 1.1 | “AIS data from Pelyr (pelyr.com), Pelyr Data Licence 1.1” |
The Service delivers this information to you in machine-readable form. Every
data frame, and every group of fields in an HTTPS response, carries a
license field holding a short id, not the licence text itself. The
directory that resolves those ids is a sources[] array whose entries
pair each id with the licence text and the attribution string
belonging to it. On Pelyr Stream it arrives in the welcome frame of
every connection; on the Pelyr HTTPS API it is served by
GET /v1/sources. Resolve a license value against
sources[].id, not against sources[].license, which
holds the licence text rather than an identifier.
A message from a collector feed with its own attribution requirement carries that feed’s id, and is identifiable, message by message, through it. A message bundled under the Pelyr entry is not: it carries that entry’s id too, but which individual source within the bundle it came from cannot be determined.
Over the HTTPS API, attribution is collective. A single response — a bounding-box snapshot, or a track — routinely carries data from more than one source. Wherever you display or pass on data obtained through the HTTPS API, you must display the attribution for every source represented in what you show, not only for one of them.
You must display the applicable attribution wherever the data is visible to end users — in the interface, on the map, in the exported document. Placing it only in source code, in a configuration file or in internal documentation does not satisfy the licences.
Sources and licences may be added or changed. The authoritative list is
always the sources[] array as served to you now — in the
welcome frame of your current connection, or by
GET /v1/sources — not this page.
5. Your API key
Access requires a personal API key.
- Your key is personal to you and must not be shared, sub-licensed, resold or otherwise made available to third parties. If others need access, they need their own keys.
- The key belongs on a server you control. Do not embed it
in browser or app code, in a public repository, or anywhere else it can be
read by third parties. A key transmitted in a URL query string
is rejected by the Service, because query strings are recorded in proxy logs
and leak via the
Refererheader. - You are responsible for all use made through your key. Tell us immediately at hello@pelyr.com if you believe it has been exposed, and we will revoke it.
- We may revoke a key at any time — see section 8.
6. Limits, and what happens when you reach them
Every key is subject to limits. The figures below are the defaults at the
time of writing; they are not a guaranteed entitlement. The values in force for
your key on Pelyr Stream are sent to you in the welcome frame under
limits.
6.1 Pelyr Stream
Where you subscribe to more than your connection can carry, the Service does
not throttle you silently: it collapses successive positions of the same vessel,
tells you how many frames you lost in every heartbeat, and closes
the connection with code 4008 only if the loss becomes permanent.
| Limit | Default | On exceeding |
|---|---|---|
| Active keys per account | 2 | Request rejected (key_limit_reached) |
| Concurrent connections per account | 2 | Connection closed, code 4005 |
| Subscriptions per connection | 4 | Request rejected |
| Bounding boxes per subscription | 50 | Request rejected; on repetition the connection is closed, code 4014 |
| Bounding boxes across all your subscriptions | 80 | Request rejected; on repetition the connection is closed, code 4014 |
| MMSI per subscription | 500 | Request rejected; on repetition the connection is closed, code 4014 |
6.2 Pelyr HTTPS API
Here the limit is a request rate, counted per key.
| Limit | Default | On exceeding |
|---|---|---|
Requests per minute — /v1/vessels, /v1/vessels/{mmsi}, /v1/vessels/{mmsi}/track |
12 | 429, rate_limited, with a Retry-After header |
GET /v1/sources |
1 request per 60 seconds | 429, rate_limited |
Time span per /track call, by requested resolution |
1min 7 days · 5min 30 days · 15min 90 days · 1h 1 year · 6h 5 years · 1d uncapped |
Request rejected, track_span_too_large |
How far back /track can answer is limited by how long we keep
each resolution, and that period is shorter for the finer resolutions. A call
that reaches beyond it is answered for the part we can still cover, and the
response states the span actually returned; where nothing is left to answer, the
request is rejected with range_before_retention.
We may adjust any of these limits at any time, including for individual keys, in particular to keep the Service available to everyone.
Do not attempt to circumvent these limits, including by opening additional accounts to obtain additional keys.
7. What you may do with the data
7.1 The data itself
Most of the AIS data you receive remains subject to the licences of its sources — CC BY 4.0, NLOD and NLOD 2.0 (section 4). Those licences permit further use and redistribution, and these terms do not restrict the rights they grant you. Where anything on this page could be read as limiting those rights, the licence prevails.
Data bundled under the Pelyr entry is different. It is not third-party open data: it is licensed to you by us, under the Pelyr Data Licence 1.1, and that licence is more restrictive than CC BY 4.0 and NLOD. Commercial use is expressly permitted and you may sell what you build from the data — but you may not pass the data itself on, whether for payment or free of charge, and you may not relay the Service. The preceding paragraph does not apply to that data.
Every frame, and every group of fields in an HTTPS response, tells you which
of the two it is: resolve its license field against
sources[], as described in section 4.
What all of these licences do require is that attribution travels with the data. If you pass on data you are permitted to pass on, the recipient must be able to see the attribution too.
7.2 Access to the Service
This is separate from the data, and here we do impose conditions. You may not:
- share, resell or sub-licence access to the Service, or operate a proxy that offers third parties access through your key;
- use the Service in a way that impairs its availability, security or integrity, or that interferes with other users;
- attempt to gain unauthorised access to any part of the Service or its infrastructure;
- use the public map on pelyr.com, or the routes behind it, as a source of
data — it is a feature of our website, not a second, unkeyed way into the
Service — and in particular do not extract from it systematically, do not
resolve the pseudonymous identifier
vidshown there to an MMSI, and do not link that identifier across its rotation; - use the data in a manner prohibited by section 3, or unlawfully — in particular for the surveillance, harassment or tracking of individuals.
8. Suspension and termination
You may stop using the Service at any time and ask us to delete your account and keys.
We may suspend or revoke your access, in whole or in part, at any time and at our discretion, in particular if you breach these terms, if your use endangers the availability or security of the Service, if we are required to do so by law or by an upstream data provider, or if we discontinue the Service. We may act first and inform you afterwards.
On the Pelyr HTTPS API a revocation takes effect immediately. On Pelyr Stream it takes effect within 60 seconds, including for connections that are already open; a revoked key produces close code 4011.
9. Pricing
Both Pelyr Stream and the Pelyr HTTPS API are currently provided free of charge within the limits in section 6. Free access is not an entitlement, and it may end as described below.
We may introduce charges for future use. A payment obligation only ever arises if you actively accept a paid plan. Nothing you do or fail to do — including continuing to use the Service — turns free use into a paid arrangement, and you will never be charged for use that has already taken place.
If we stop offering free access, the practical consequence is that your free
access ends. We will announce that beforehand, through this page and through a
notice frame on Pelyr Stream, so it reaches you on the channel you
actually use. Accounts created through GitHub do not necessarily
carry an email address, which is why the in-protocol notice is the one we rely
on.
10. Liability
The Service is provided free of charge, as a private, non-commercial project. To the extent permitted by applicable law:
- We are liable without limitation for damages arising from injury to life, body or health, and for damages caused intentionally or by gross negligence.
- We are not liable for slight negligence, except where an essential contractual obligation is breached; in that case liability is limited to the damage typically foreseeable for a service of this kind provided without charge.
- We are not liable for loss of profit, loss of data, business interruption, or any damage arising from the unavailability, incompleteness, delay or inaccuracy of the data — nor for any consequence of use contrary to section 3.
Nothing in these terms limits liability that cannot be limited by law, including under the Austrian Product Liability Act (Produkthaftungsgesetz).
11. Changes to these terms
We may amend these terms. The current version is always published here with its version number and date. Where reasonably practicable we will announce changes that materially affect your rights or obligations before they take effect, by the same means as in section 9. If you do not accept a change, stop using the Service; that is the only consequence.
12. Governing law and jurisdiction
These terms are governed by Austrian law, excluding its conflict-of-law rules and the UN Convention on Contracts for the International Sale of Goods.
If you are a consumer within the meaning of the Austrian Consumer Protection Act (Konsumentenschutzgesetz), this choice of law does not deprive you of the protection of mandatory provisions of the law of your country of residence, and you may bring proceedings in the courts of your place of residence. For all other users, the courts competent for St. Veit an der Glan, Austria shall have exclusive jurisdiction.
13. Severability
If any provision of these terms is or becomes invalid, the validity of the remaining provisions is unaffected.