This service for Element43 provides a drop-in replacement for EMDR. It fetches market data from ESI and provides a ZMQ socket compatible with EMDR's output format based on UUDIF. On the first run updates are spread over five minutes. Subsequent requests are made when the region's cache in ESI expires (every five minutes). The region's data is augmented with data for publicly accessible (depending on the token you supply) structures (citadels). Citadels whose market endpoint returned a 403 (Forbidden), are put on a blacklist which gets wiped every twelve hours. While the markets are updated on cache expiration (~ every five minutes), available regions and citadels are updated every 30 minutes. Types on the market are updated every two hours. Each message on the ZeroMQ socket contains a whole region. Types with no orders yield an empty list of rows inside the result set (see UUDIF docs). De-duplication by downstream consumers can be achieved by hashing the individual rowset's rows and comparing hashes with past values. See emdr-to-nsq for an example.