diff --git a/pkgs/pubspec_parse/lib/src/dependency.dart b/pkgs/pubspec_parse/lib/src/dependency.dart
index 8488fe1..a66c9c4 100644
--- a/pkgs/pubspec_parse/lib/src/dependency.dart
+++ b/pkgs/pubspec_parse/lib/src/dependency.dart
@@ -154,12 +154,12 @@
 
 @JsonSerializable(createToJson: false)
 class HostedDependency extends Dependency {
-  // TODO: support explicit host
-
   @JsonKey(fromJson: _constraintFromString)
   final VersionConstraint version;
 
-  HostedDependency({VersionConstraint version})
+  final HostedDetails hosted;
+
+  HostedDependency({VersionConstraint version, this.hosted})
       : this.version = version ?? VersionConstraint.any,
         super._();
 
@@ -179,5 +179,24 @@
   String get _info => version.toString();
 }
 
+@JsonSerializable(createToJson: false, nullable: false)
+class HostedDetails {
+  final String name;
+
+  @JsonKey(fromJson: _parseUri)
+  final Uri url;
+
+  HostedDetails(this.name, this.url) {
+    if (name == null) {
+      throw new ArgumentError.value(name, 'name', '"name" cannot be null');
+    }
+    if (url == null) {
+      throw new ArgumentError.value(url, 'url', '"url" cannot be null');
+    }
+  }
+
+  factory HostedDetails.fromJson(Map json) => _$HostedDetailsFromJson(json);
+}
+
 VersionConstraint _constraintFromString(String input) =>
     new VersionConstraint.parse(input);
diff --git a/pkgs/pubspec_parse/lib/src/dependency.g.dart b/pkgs/pubspec_parse/lib/src/dependency.g.dart
index 794200b..f3dc23d 100644
--- a/pkgs/pubspec_parse/lib/src/dependency.g.dart
+++ b/pkgs/pubspec_parse/lib/src/dependency.g.dart
@@ -35,7 +35,18 @@
   return $checkedNew('HostedDependency', json, () {
     var val = new HostedDependency(
         version: $checkedConvert(json, 'version',
-            (v) => v == null ? null : _constraintFromString(v as String)));
+            (v) => v == null ? null : _constraintFromString(v as String)),
+        hosted: $checkedConvert(json, 'hosted',
+            (v) => v == null ? null : new HostedDetails.fromJson(v as Map)));
+    return val;
+  });
+}
+
+HostedDetails _$HostedDetailsFromJson(Map json) {
+  return $checkedNew('HostedDetails', json, () {
+    var val = new HostedDetails(
+        $checkedConvert(json, 'name', (v) => v as String),
+        $checkedConvert(json, 'url', (v) => _parseUri(v as String)));
     return val;
   });
 }
diff --git a/pkgs/pubspec_parse/test/dependency_test.dart b/pkgs/pubspec_parse/test/dependency_test.dart
index b8544d8..9a42a64 100644
--- a/pkgs/pubspec_parse/test/dependency_test.dart
+++ b/pkgs/pubspec_parse/test/dependency_test.dart
@@ -48,18 +48,32 @@
   test('HostedDepedency - null', () {
     var dep = _dependency<HostedDependency>(null);
     expect(dep.version.toString(), 'any');
+    expect(dep.hosted, isNull);
     expect(dep.toString(), 'HostedDependency: any');
   });
 
   test('HostedDepedency - string', () {
     var dep = _dependency<HostedDependency>('^1.0.0');
     expect(dep.version.toString(), '^1.0.0');
+    expect(dep.hosted, isNull);
     expect(dep.toString(), 'HostedDependency: ^1.0.0');
   });
 
   test('HostedDepedency - map', () {
     var dep = _dependency<HostedDependency>({'version': '^1.0.0'});
     expect(dep.version.toString(), '^1.0.0');
+    expect(dep.hosted, isNull);
+    expect(dep.toString(), 'HostedDependency: ^1.0.0');
+  });
+
+  test('HostedDepedency - map', () {
+    var dep = _dependency<HostedDependency>({
+      'version': '^1.0.0',
+      'hosted': {'name': 'hosted_name', 'url': 'hosted_url'}
+    });
+    expect(dep.version.toString(), '^1.0.0');
+    expect(dep.hosted.name, 'hosted_name');
+    expect(dep.hosted.url.toString(), 'hosted_url');
     expect(dep.toString(), 'HostedDependency: ^1.0.0');
   });
 }
