DeviceAtlas overview

DeviceAtlas is the world’s leading device detection solution providing data on all mobile and connected devices including smartphones, tablets, laptops, and wearable devices. You can use device detection to analyse web traffic, redirect or adapt content for mobile audiences, or to target specific mobile devices.

DeviceAtlas helps you stay on top of a fast changing device landscape by providing a detailed and actionable view of how users access content and networks on a myriad of devices.

Device Detection Solution

Trusted Device Detection Partner

DeviceAtlas has led the way in device detection and intelligence since 2008. Leading companies across multiple industry verticals build their business on DeviceAtlas. Our robust, high performance APIs are deployed in demanding environments, providing a competitive advantage to organizations who demand the very best solution to differentiate their businesses. Read more »

Who Uses Device Detection?

Web Brands

Web Brands

Direct visitors to the right experience or adapt content on the fly to optimize UX and Conversion Rates. More »

Advertising Platforms

Advertising Platforms

Maximize advertiser’s ROI, target advertising to specific devices, and ensure user engagement on the receiving device. More »

Operators and their Partners

Operators and their Partners

Get detailed device data indexed by TAC to power marketing campaigns, infrastructure decisions and rich device analytics and reporting in the telco environment. More »

Service Providers

Service Providers

Many of our customers bring device awareness to their platforms and products using DeviceAtlas. From deep device intelligence to power in-depth Web Analytics tools to Advertising, CMS, and Email solutions. More »

Read our case studies and find out about how DeviceAtlas performs for our clients. More »

Device Data

DeviceAtlas provides the most accurate and comprehensive device data on the market. It is sourced from multiple industry-leading partnerships ensuring the highest device detection rates. Our data is fully transparent so you can see the provenance of every property for every device. You can submit data, or maintain your own custom data set. More »

Samsung Galaxy S7 Edge

Samsung Galaxy S7 Edge

Google Pixel C

Samsung Galaxy Tab A

Nokia Lumia 950

Lumia 950

iPhone SE

iPhone SE

Blackberry Priv

Blackberry Priv

Device Vendor Samsung
Device Model SM-G935U
Year Released 2016
Screen Width 1440
Screen Height 2560
Display PPI 534
Touch Screen
Is Tablet
OS Android
Browser Name Android Browser
Cookie
URI Scheme Tel
Flash Capable
Image PNG
MP3
AAC
HTML Canvas
HTML Video
CSS Animations
CSS Transitions
JS Support Events
JS Device Orientation
JS Query Selector
JS Local Storage
Full list of data properties »
Device Vendor Samsung
Device Model SM-T585
Year Released 2016
Screen Width 1920
Screen Height 1200
Display PPI 224
Touch Screen
Is Tablet
OS Android
Browser Name Android Browser
Cookie
URI Scheme Tel
Flash Capable
Image PNG
MP3
AAC
HTML Canvas
HTML Video
CSS Animations
CSS Transitions
JS Support Events
JS Device Orientation
JS Query Selector
JS Local Storage
Full list of data properties »
Device Vendor Microsoft
Device Model RM-1105
Year Released 2015
Screen Width 1440
Screen Height 2560
Display PPI 565
Touch Screen
Is Tablet
OS Windows Phone
Browser Name Internet Explorer Mobile
Cookie
URI Scheme Tel
Flash Capable
Image PNG
MP3
AAC
HTML Canvas
HTML Video
CSS Animations
CSS Transitions
JS Support Events
JS Device Orientation
JS Query Selector
JS Local Storage
Full list of data properties »
Device Vendor Apple
Device Model iPhone SE
Year Released 2016
Screen Width 640
Screen Height 1136
Display PPI 326
Touch Screen
Is Tablet
OS iOS
Browser Name Safari
Cookie
URI Scheme Tel
Flash Capable
Image PNG
MP3
AAC
HTML Canvas
HTML Video
CSS Animations
CSS Transitions
JS Support Events
JS Device Orientation
JS Query Selector
JS Local Storage
Full list of data properties »
Device Vendor BlackBerry
Device Model STV100
Year Released 2015
Screen Width 1440
Screen Height 2560
Display PPI 540
Touch Screen
Is Tablet
OS Android
Browser Name Android Browser
Cookie
URI Scheme Tel
Flash Capable
Image PNG
MP3
AAC
HTML Canvas
HTML Video
CSS Animations
CSS Transitions
JS Support Events
JS Device Orientation
JS Query Selector
JS Local Storage
Full list of data properties »

Dynamic Data

DeviceAtlas provides Dynamic Data on a device’s context including user specific settings, device and browser state and network connection type and speed to complement server-side data and add further data points to your web or targeting strategies.

Client-side Device Detection component

The Client-side Detection component adds awareness of device capabilities that can change according to the context and preferences of a user.

Connectivity Analysis

The Connectivity Analysis feature automatically measures the connection speed of a device in real-time.

Carrier Identification

Carrier Identification allows you to identify the presence of a carrier or WiFi connection and provides data on who that carrier is.

APIs for Every Environment

You can implement device detection in all major environments with our well-documented APIs including PHP, Java, Ruby, Python, .NET and C++. Easy to use, with lots of sample code, you can get up and running quickly. Also available in module form for Apache, IIS, NGINX and Varnish making your entire stack device aware. Node.js API now available.

Cloud API

Enterprise API

Java

.NET

PHP

Python

Ruby

Node.js

C++

// Get the Cloud API instance and set the licence key
Client client = Client.getInstance();
client.setLicenceKey("your_licence_key");

// Pass the HttpServletRequest object and get back the device properties
Map results = client.getDeviceData(request);
Map properties = (Map) results.get(Client.KEY_PROPERTIES);

// Detect if mobile device
Boolean isMobileDevice = (Boolean) properties.get("mobileDevice");
if (isMobileDevice != null && isMobileDevice.booleanValue()) {

// Example 1: Get the screen width for the images optimization
Integer displayWidth = (Integer) properties.get("displayWidth");

// Example 2: Touch screen optimization
Boolean useBiggerIcons = (Boolean) properties.get("touchScreen");

// Example 3: Send Geo Location JS to client?
Boolean supportsGeoLocation = (Boolean) properties.get("js.geoLocation");

}

// Get the Cloud API instance and set the licence key
Client client = Client.GetInstance();
client.SetLicenceKey("your_licence_key");

// Pass the HttpServletRequest object and get back the device properties
Hashtable results = client.GetDeviceData(Request);
Hashtable properties = (Hashtable) results[Client.KEY_PROPERTIES];

// Detect if mobile device
bool isMobileDevice = (bool) properties["mobileDevice"];
if (isMobileDevice.HasValue && isMobileDevice.Value) {

// Example 1: Get the screen width for the images optimization
int displayWidth = (int) properties["displayWidth"];

// Example 2: Touch screen optimization
bool useBiggerIcons = (bool) properties["touchScreen"];

// Example 3: Send Geo Location JS to client?
bool suportsGeoLocation = (bool) properties["js.geoLocation"];

}

// Include DeviceAtlasCloud library
include './DeviceAtlasCloud/Api/Client.php';

// Call static method and get back the device properties
$results = DeviceAtlasCloudClient::getDeviceData();
$properties = $results[DeviceAtlasCloudClient::KEY_PROPERTIES];

// Detect if mobile device
if (isset($properties['mobileDevice']) && $properties['mobileDevice']) {

// Example 1: Get the screen width for the images optimization
$display_width = $properties['displayWidth'];

// Example 2: Touch screen optimization
$use_bigger_icons = $properties['touchScreen'];

// Example 3: Send Geo Location JS to client?
$suports_geo_location = $properties['js.geoLocation'];

}

# Import DeviceAtlasCloud library
# (locally deployed at DeviceAtlasCloud/Api/Client.py)
sys.path.append(os.path.join("DeviceAtlasCloud"))
import Api.Client

# Initialize the client and get back the device properties
client = DeviceAtlasCloud.Client.Client()
results = client.getDeviceData()
properties = results[da.PROPERTIES]

# Detect if mobile device
if 'mobileDevice' in properties and properties['mobileDevice']:

# Example 1: Get the screen width for the images optimization
displayWidth = properties['displayWidth']

# Example 2: Touch screen optimization
useBiggerIcons = properties['touchScreen']

# Example 3: Send Geo Location JS to client?
supportsGeoLocation = properties['js.geoLocation']

# Import DeviceAtlas Cloud Client gem
require 'deviceatlas_cloud_client'

class ExampleController < ActionController::Base

# Include our controller helper
include DeviceAtlasCloudClient::ControllerHelper

def index

# Get Cloud instance, set your licence key and get the device properties
client = get_deviceatlas_cloud_client_instance
client.settings.licence_key = 'YOUR_LICENCE_KEY'
device_data = client.get_device_data

# Sample usage - Detect mobile device
if device_data[:properties].has_key?('mobileDevice')

# example 1: Get the screen width for the images optimization
display_width = device_data[:properties]['displayWidth']

# example 2: Touch screen optimization
use_bigger_icons = device_data[:properties]['touchScreen']

# example 3: Send Geo Location JS to client?
supports_geo_location = device_data[:properties]['js.geoLocation']

end

end

// Create a DeviceApiWeb instance and load the data file
DeviceApiWeb deviceApi = new DeviceApiWeb();
deviceApi.loadDataFromFile("/path/to/datafile.json");

// Pass the HttpServletRequest object and detect the device properties
Properties properties = deviceApi.getProperties(request);

// Detect if mobile device
if (properties.contains("mobileDevice", true)) {

// Example 1: Get the screen width for the image optimization
int displayWidth = properties.get("displayWidth").asInteger();

// Example 2: Touch screen optimization
boolean useBiggerIcons = properties.get("touchScreen").asBoolean();

// Example 3: Get Operating System
String osName = properties.get("osName").toString();

}

// Create a DeviceApiWeb instance and load the data file
DeviceApiWeb deviceApi = new DeviceApiWeb();
deviceApi.LoadDataFromFile("/path/to/datafile.json");

// Detect the device properties for current request
Properties properties = deviceApi.GetProperties();

// Detect if mobile device
if (properties.Contains("mobileDevice", true)) {

// Example 1: Get the screen width for the image optimization
int displayWidth = properties["displayWidth"].AsInteger();

// Example 2: Touch screen optimization
bool useBiggerIcons = properties["touchScreen"].AsBoolean();

// Example 3: Get Operating System
String osName = properties["osName"].ToString();

}

// Create a DeviceApiWeb instance and load the data file
$deviceApi = new DeviceApiWeb();
$deviceApi->loadDataFromFile("/path/to/datafile.json");

// Detect properties for current request
$properties = $deviceApi->getProperties();

// Detect if mobile device
if ($properties->contains("mobileDevice", true)) {

// Example 1: Get the screen width for the image optimization
$displayWidth = $properties->get("displayWidth")->asInteger();

// Example 2: Touch screen optimization
$useBiggerIcons = $properties->get("touchScreen")->asBoolean();

// Example 3: Get Operating System
$osName = $properties->get("osName")->toString();

}

# Create a DeviceApiWeb instance and load the data file
device_api = DeviceApi()
device_api.load_data_from_file("/path/to/datafile.json")

# Pass the request object from BaseHTTPRequestHandler and detect the device
# properties
properties = device_api.get_properties(self.headers)

# Detect if mobile device
if properties.contains("mobileDevice", True):

# Example 1: Get the screen width for the image optimization
display_width = int(properties.get("displayWidth"))

# Example 2: Touch screen optimization
use_bigger_icons = bool(properties.get("touchScreen"))

# Example 3: Get Operating System
os_name = str(properties.get("osName"))

# Include the API controller helper
include Mobi::Mtld::Da::Device::ControllerHelper

# Create a DeviceApiWeb instance and load the data file
device_api = get_deviceatlas_device_api_web_instance
device_api.load_data_from_file "/path/to/datafile.json"

# Get the device properties
properties = device_api.get_properties

# Detect if mobile device
if properties.contains?("mobileDevice", true)

# Example 1: Get the screen width for the image optimization
display_width = properties.get("displayWidth").to_i

# Example 2: Touch screen optimization
use_bigger_icons = properties.get("touchScreen").to_b

# Example 3: Get Operating System
os_name = properties.get("osName").to_s

end

// Create a DeviceApiWeb instance and load the data file
var deviceApi = new DeviceApiWeb();
deviceApi.loadDataFromFile('path/to/datafile.json');

// Detect properties for nodejs request object
var properties = deviceApi.getPropertiesFromRequest(request);

// Detect if mobile device
if (properties.contains('mobileDevice', true)){

// Example 1: Get the screen width for the image optimization
var displayWidth = properties.get('displayWidth').getValue();

// Example 2: Touch screen optimization
var useBiggerIcons = properties.contains('touchScreen', true);

// Example 3: Get Operating System with fallback
var osName = properties.containsKey('osName')?properties.get('osName').getValue():'Unknown';

}

// Create a DeviceAtlas instance and load the data file
Da::DeviceAtlas deviceApi;
deviceApi.loadDataFromFile("/path/to/datafile.json");

// Pass the Da::HttpHeaders map of headers and detect the device properties
Da::DeliveryContext properties(deviceApi, headers);

// Detect if mobile device
if (properties.contains("mobileDevice", true)) {

// Example 1 : Get the screen width for the images optimization
int displayWidth = (long)*properties["displayWidth"];

// Example 2 : Touch screen optimization
bool useBiggerIcons = (bool)*properties["touchScreen"];

// Example 3 : Get operating System
std::string osName = (std::string)*properties["osName"];

}

Mobile Device Detection Solution

Performance

DeviceAtlas is a best-in-class, high performance, device detection solution. We are fully transparent, and our performance benchmarks are fully documented using real world testing conditions.

DeviceAtlas APIs use a highly optimized JSON file format that offers lightning fast lookups with minimal server footprint.

Optimized for size and speed of searching, DeviceAtlas does not need ongoing maintenance and offers the best device detection at a low total cost of ownership. More »

How Device Detection Works

Device detection can be deployed locally on your servers (Enterprise), or as a service accessed over the web (Cloud).

Server-side device detection explained

Free Trial

Try DeviceAtlas now. We offer free trials for both Cloud and Enterprise versions. To try Cloud, just sign up and download. To try Enterprise, get in touch to arrange your trial today.

Pricing & Trial

Create amazing web presences on any screen
goMobi

Learn everything about mobile web technology
mobiForge

Evaluate your websites’ mobile readiness
mobiReady

© 2017 Afilias Technologies Ltd (dotMobi). All rights reserved.

This is a website of Afilias Technologies Ltd, a private company limited by shares, incorporated and registered in the Republic of Ireland with registered number 398040 and registered office at 6th Floor, 2 Grand Canal Square, Dublin 2, Ireland

IAB Certified Member